Announcement

Collapse
No announcement yet.

Riassumendo...

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Riassumendo...

    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
Working...
X