Ho provato, girando e rigirando sul forum, a costruirmi un paio di efs che mi possano tradurre la formula metastock:
((mov((h+l/2),5,s)-Mov((h+l/2),35,s) - mov(mov((h+l/2),5,s)-Mov((h+l/2),35,s),5))*100)
il primo che mi da errore è:
/ **************************************************
***************
Provided By : eSignal. (c) Copyright 2003
**************************************************
***************/
function preMain() {
setStudyTitle("MA Histograms");
setCursorLabelName("Hist1", 0);
setCursorLabelName("Hist2", 1);
setDefaultBarFgColor(Color.blue, 0);
setDefaultBarFgColor(Color.red, 1);
setPlotType(PLOTTYPE_HISTOGRAM, 0);
setPlotType(PLOTTYPE_LINE, 1);
setDefaultBarThickness(5, 0);
setDefaultBarThickness(3, 1);
}
var MAstudy1 = new MAStudy(34, 0, "Close", MAStudy.SIMPLE);
var MAstudy2 = new MAStudy(5, 0, "Close", MAStudy.SIMPLE);
var aMA = new Array(5);
var vHist1 = null;
var vHist2 = null;
function main() {
var nState = getBarState();
if (nState == BARSTATE_NEWBAR && vHist1 != null) {
aMA.pop();
aMA.unshift(vHist1);
}
var vMA1 = MAstudy1.getValue(MAStudy.MA);
if (vMA1 == null) return;
var vMA2 = MAstudy2.getValue(MAStudy.MA);
if (vMA2 == null) return;
vHist1 = (vMA2 - vMA1);
vHist2 = ((vMA2 - vMA1) - (MAStudy(5, 0, (vMA2 - vMA1), MAStudy.SIMPLE)));
return new Array(vHist1, vHist2);
}
poi ho provato a trasformarne uno già esistente in modo da avere un alert quando l'oscillatore di cui sopra passa la zeroline, ma pur non dandomi errori non costruisce come deve essere l'oscillatore stesso:
//{{EFSWizard_Description
//
// This formula was generated by the Alert Wizard
//
//}}EFSWizard_Description
//{{EFSWizard_Declarations
var vSMA5_of_HL2 = new MAStudy(5, 0, "HL/2", MAStudy.SIMPLE);
var vSMA35_of_HL2 = new MAStudy(35, 0, "HL/2", MAStudy.SIMPLE);
var vPriceOsc5_35_of_HL2 = new OscStudy(5, 35, "HL/2", false);
var vPriceOsc1_5_of_vPriceOsc5_35_of_HL2 = new OscStudy(1, 5, vPriceOsc5_35_of_HL2, OscStudy.OSC, false);
var vLastAlert = -1;
//}}EFSWizard_Declarations
function preMain() {
/**
* This function is called only once, before any of the bars are loaded.
* Place any study or EFS configuration commands here.
*/
//{{EFSWizard_PreMain
setPriceStudy(false);
setStudyTitle("EWO");
setCursorLabelName("EWO", 0);
setDefaultBarStyle(PS_SOLID, 0);
setDefaultBarFgColor(Color.red, 0);
setDefaultBarThickness(1, 0);
setPlotType(PLOTTYPE_LINE, 0);
//}}EFSWizard_PreMain
}
function main() {
/**
* The main() function is called once per bar on all previous bars, once per
* each incoming completed bar, and if you don't have 'setComputeOnClose(true)'
* in your preMain(), it is also called on every tick.
*/
//{{EFSWizard_Expressions
//{{EFSWizard_Expression_1
if (
vPriceOsc1_5_of_vPriceOsc5_35_of_HL2.getValue(OscS tudy.OSC) > 0
) onAction1()
//}}EFSWizard_Expression_1
//{{EFSWizard_Expression_2
else if (
vPriceOsc1_5_of_vPriceOsc5_35_of_HL2.getValue(OscS tudy.OSC) < 0
) onAction2();
//}}EFSWizard_Expression_2
//}}EFSWizard_Expressions
//{{EFSWizard_Return
return vPriceOsc1_5_of_vPriceOsc5_35_of_HL2.getValue(OscS tudy.OSC);
//}}EFSWizard_Return
}
L'altra formula metastock che mi piacerebbe trasformare in efs è relativa a un indicatore che passa da -1 a +1 in riferimento al renko chart quando questo passa da short a long e viceversa.
Quello che ho trovato nel forum è relativo al cambio di colore del box, ma non è corretto in quanto nella stessa barra possono crearsi più box e quindi il segnale di inversione scatterebbe sull'ultimo box creato e non sul primo come nell'efs trovato.
La formula metastock (non semplicissima) è:
pc:= Input("pc",0,100,1);
K:=CLOSE*pc/100; RenkoLine:=If(***(1)=1,CLOSE, If(PREV>=0, If(CLOSE<PREV-2*K,-(PREV-2*K), Floor(Max(C-PREV,0)/K)*K+PREV), If(CLOSE>Abs(PREV)+2*K,-PREV+2*K, Floor(Max(Abs(PREV)-C,0)/K)*K+PREV))); RL:=Abs(RenkoLine); RL; BW:=If(***(1)=1,0, If(RL>Ref(RL,-1),+1,If(RL<Ref(RL,-1),-1,PREV)));
BW;0;
chissà se si riesce a venirne a capo?
thx.
gigi
((mov((h+l/2),5,s)-Mov((h+l/2),35,s) - mov(mov((h+l/2),5,s)-Mov((h+l/2),35,s),5))*100)
il primo che mi da errore è:
/ **************************************************
***************
Provided By : eSignal. (c) Copyright 2003
**************************************************
***************/
function preMain() {
setStudyTitle("MA Histograms");
setCursorLabelName("Hist1", 0);
setCursorLabelName("Hist2", 1);
setDefaultBarFgColor(Color.blue, 0);
setDefaultBarFgColor(Color.red, 1);
setPlotType(PLOTTYPE_HISTOGRAM, 0);
setPlotType(PLOTTYPE_LINE, 1);
setDefaultBarThickness(5, 0);
setDefaultBarThickness(3, 1);
}
var MAstudy1 = new MAStudy(34, 0, "Close", MAStudy.SIMPLE);
var MAstudy2 = new MAStudy(5, 0, "Close", MAStudy.SIMPLE);
var aMA = new Array(5);
var vHist1 = null;
var vHist2 = null;
function main() {
var nState = getBarState();
if (nState == BARSTATE_NEWBAR && vHist1 != null) {
aMA.pop();
aMA.unshift(vHist1);
}
var vMA1 = MAstudy1.getValue(MAStudy.MA);
if (vMA1 == null) return;
var vMA2 = MAstudy2.getValue(MAStudy.MA);
if (vMA2 == null) return;
vHist1 = (vMA2 - vMA1);
vHist2 = ((vMA2 - vMA1) - (MAStudy(5, 0, (vMA2 - vMA1), MAStudy.SIMPLE)));
return new Array(vHist1, vHist2);
}
poi ho provato a trasformarne uno già esistente in modo da avere un alert quando l'oscillatore di cui sopra passa la zeroline, ma pur non dandomi errori non costruisce come deve essere l'oscillatore stesso:
//{{EFSWizard_Description
//
// This formula was generated by the Alert Wizard
//
//}}EFSWizard_Description
//{{EFSWizard_Declarations
var vSMA5_of_HL2 = new MAStudy(5, 0, "HL/2", MAStudy.SIMPLE);
var vSMA35_of_HL2 = new MAStudy(35, 0, "HL/2", MAStudy.SIMPLE);
var vPriceOsc5_35_of_HL2 = new OscStudy(5, 35, "HL/2", false);
var vPriceOsc1_5_of_vPriceOsc5_35_of_HL2 = new OscStudy(1, 5, vPriceOsc5_35_of_HL2, OscStudy.OSC, false);
var vLastAlert = -1;
//}}EFSWizard_Declarations
function preMain() {
/**
* This function is called only once, before any of the bars are loaded.
* Place any study or EFS configuration commands here.
*/
//{{EFSWizard_PreMain
setPriceStudy(false);
setStudyTitle("EWO");
setCursorLabelName("EWO", 0);
setDefaultBarStyle(PS_SOLID, 0);
setDefaultBarFgColor(Color.red, 0);
setDefaultBarThickness(1, 0);
setPlotType(PLOTTYPE_LINE, 0);
//}}EFSWizard_PreMain
}
function main() {
/**
* The main() function is called once per bar on all previous bars, once per
* each incoming completed bar, and if you don't have 'setComputeOnClose(true)'
* in your preMain(), it is also called on every tick.
*/
//{{EFSWizard_Expressions
//{{EFSWizard_Expression_1
if (
vPriceOsc1_5_of_vPriceOsc5_35_of_HL2.getValue(OscS tudy.OSC) > 0
) onAction1()
//}}EFSWizard_Expression_1
//{{EFSWizard_Expression_2
else if (
vPriceOsc1_5_of_vPriceOsc5_35_of_HL2.getValue(OscS tudy.OSC) < 0
) onAction2();
//}}EFSWizard_Expression_2
//}}EFSWizard_Expressions
//{{EFSWizard_Return
return vPriceOsc1_5_of_vPriceOsc5_35_of_HL2.getValue(OscS tudy.OSC);
//}}EFSWizard_Return
}
L'altra formula metastock che mi piacerebbe trasformare in efs è relativa a un indicatore che passa da -1 a +1 in riferimento al renko chart quando questo passa da short a long e viceversa.
Quello che ho trovato nel forum è relativo al cambio di colore del box, ma non è corretto in quanto nella stessa barra possono crearsi più box e quindi il segnale di inversione scatterebbe sull'ultimo box creato e non sul primo come nell'efs trovato.
La formula metastock (non semplicissima) è:
pc:= Input("pc",0,100,1);
K:=CLOSE*pc/100; RenkoLine:=If(***(1)=1,CLOSE, If(PREV>=0, If(CLOSE<PREV-2*K,-(PREV-2*K), Floor(Max(C-PREV,0)/K)*K+PREV), If(CLOSE>Abs(PREV)+2*K,-PREV+2*K, Floor(Max(Abs(PREV)-C,0)/K)*K+PREV))); RL:=Abs(RenkoLine); RL; BW:=If(***(1)=1,0, If(RL>Ref(RL,-1),+1,If(RL<Ref(RL,-1),-1,PREV)));
BW;0;
chissà se si riesce a venirne a capo?
thx.
gigi