entry wenn vorheriges crossing over tiefer war

Viewing 9 posts - 1 through 9 (of 9 total)
  • Author
    Posts
  • #163670 quote
    axmichi
    Participant
    Senior

    Hallo, ich bräuchte einen kleinen Code:

    Der Entry (LONG) soll bei einem normalen Crossing over der MACD Signal Line erfolgen, aber nur wenn der vorherige Crossing over unter dem aktuellen crossing over liegt.

    Siehe Bild

    Ich weiß nicht wie ich vorheriges im Code schreiben soll?

     

    Danke !!!!!

    #163672 quote
    robertogozzi
    Moderator
    Master

    Hier ist es (ich habe es nicht ausprobiert):

    Defparam CumulateOrders = false
    Once CrossOverLevel     = 0
    Once PrevCrossOverLevel = 0
    Once CrossOver          = 0
    MyMACD       = Average[12,1](close) - Average[26,1](close)
    MySignalLine = Average[9,1](MyMACD)
    CrossOver    = MyMACD crosses over MySignalLine
    If CrossOver then
       PrevCrossOverLevel = CrossOverLevel
       CrossOverLevel     = MyMACD
       If CrossOverLevel < PrevCrossOverLevel or PrevCrossOverLevel = 0 Then
          CrossOver = 0
       Endif
    Endif
    If MyLongConditions and CrossOver and Not OnMarket then
       Buy 1 contract at Market
    Endif
    Set Target pProfit 200
    Set Stop   pLoss   100
    #163680 quote
    axmichi
    Participant
    Senior

    Daaanke OMG ist das kompliziert 🙂

    Kannst du das bitte mit diesem Code kombinieren, das bekomm ich sicher nicht hin.

    LG

    Capital  = 5000                             //initial C
    Equity   = Capital + StrategyProfit          //current Equity
    PerCent  = 2                                 //1%  risk
    RiskSize = (Equity * PerCent / 100)          //max. Money at risk
    MinSize  = 1                              //0.5 lots
    // Bedingungen zum Einstieg in Long-Positionen
    indicator1 = ExponentialAverage[17](close)
    c1 = (close > indicator1)
    indicator2 = MACDline[12,26,9](close)
    c2 = (indicator2 < 0.1)
    indicator3 = MACDline[12,26,9](close)
    indicator4 = MACDSignal[12,26,9](close)
    c3 = (indicator3 CROSSES OVER indicator4)
    
     
    IF not longonmarket and c1 AND c2 AND c3 THEN
    X = (AverageTrueRange[10](close))*3    //X = SL difference
    PositionSize = max(MinSize,RiskSize / X)  //Compute PositionSize, no less than MinSize
    BUY PositionSize SHARES AT MARKET
    
    ENDIF
     
    SET STOP   LOSS   x
    SET TARGET PROFIT x * 3
    #163684 quote
    robertogozzi
    Moderator
    Master

    Das sollte in Ordnung sein:

    Capital  = 5000                             //initial C
    Equity   = Capital + StrategyProfit          //current Equity
    PerCent  = 2                                 //1%  risk
    RiskSize = (Equity * PerCent / 100)          //max. Money at risk
    MinSize  = 1                              //0.5 lots
    // Bedingungen zum Einstieg in Long-Positionen
    indicator1 = ExponentialAverage[17](close)
    c1 = (close > indicator1)
    indicator2 = MACDline[12,26,9](close)
    c2 = (indicator2 < 0.1)
    indicator3 = MACDline[12,26,9](close)
    indicator4 = MACDSignal[12,26,9](close)
    Once CrossOverLevel     = 0
    Once PrevCrossOverLevel = 0
    Once CrossOver          = 0
    CrossOver    = indicator3 crosses over indicator4
    If CrossOver then
       PrevCrossOverLevel = CrossOverLevel
       CrossOverLevel     = indicator3 
       If CrossOverLevel < PrevCrossOverLevel or PrevCrossOverLevel = 0 Then
          CrossOver = 0
       Endif
    Endif
    IF not longonmarket and c1 AND c2 AND CrossOver THEN
       X = (AverageTrueRange[10](close))*3    //X = SL difference
       PositionSize = max(MinSize,RiskSize / X)  //Compute PositionSize, no less than MinSize
       BUY PositionSize SHARES AT MARKET
    ENDIF
    SET STOP   LOSS   x
    SET TARGET PROFIT x * 3
    #163717 quote
    axmichi
    Participant
    Senior

    Hallo und Danke das werde ich gleich mal versuchen und hoffe das ich aus den bedingungen auch einen Screener gebastelt bekomme.

    Fals ich es nicht schaffe, hoffe ich das Sie noch mal helfen können.

    Danke und Gruß

    #163735 quote
    axmichi
    Participant
    Senior

    Hallo, ich kriege das leider nicht hin, können Sie bitte helfen?

    Der Screener soll alle Werte finden, wo der MACD wie im Code oben überkreuzt, wenn die letzte Überkreutzung tiefer war und der Close über dem EMA 17 liegt.

     

    Das wäre toll.

     

    Kann es sein das im screener Coder Once nicht akzeptiert wird?

     

    Danke Ihnen

    #163737 quote
    robertogozzi
    Moderator
    Master

    Versuch es:

    indicator1 = ExponentialAverage[17](close)
    c1 = (close > indicator1)
    indicator2 = MACDline[12,26,9](close)
    c2 = (indicator2 < 0.1)
    indicator3 = MACDline[12,26,9](close)
    indicator4 = MACDSignal[12,26,9](close)
    Once CrossOverLevel     = 0
    Once PrevCrossOverLevel = 0
    Once CrossOver          = 0
    CrossOver    = indicator3 crosses over indicator4
    If CrossOver then
       PrevCrossOverLevel = CrossOverLevel
       CrossOverLevel     = indicator3
       If CrossOverLevel < PrevCrossOverLevel or PrevCrossOverLevel = 0 Then
          CrossOver = 0
       Endif
    Endif
    Cond = c1 AND c2 AND CrossOver
    SCREENER[Cond]
    #163748 quote
    axmichi
    Participant
    Senior

    Hallo, danke aber der screener funktioniert leider nicht, er findet keine crosses over

    siehe Bild

     

    Danke

    #163770 quote
    robertogozzi
    Moderator
    Master

    Ich habe tatsächlich einige falsche Ergebnisse festgestellt:

    indicator1 = ExponentialAverage[17](close)
    c1 = (close > indicator1)
    indicator2 = MACDline[12,26,9](close)
    c2 = (indicator2 < 0.1)
    indicator3 = MACDline[12,26,9](close)
    indicator4 = MACDSignal[12,26,9](close)
    Once CrossOverLevel     = 0
    Once PrevCrossOverLevel = 0
    Once CrossOver          = 0
    CrossOver    = indicator3 crosses over indicator4
    If CrossOver then
       PrevCrossOverLevel = CrossOverLevel
       CrossOverLevel     = indicator3
       If CrossOverLevel < PrevCrossOverLevel or PrevCrossOverLevel = 0 Then
          CrossOver = 0
       Endif
    Endif
    Cond = c1 AND c2 AND CrossOver
    SCREENER[Cond]

    Im Gegenteil, der gleiche Code, der in einen Indikator umgewandelt wurde, funktioniert ordnungsgemäß:

    indicator1 = ExponentialAverage[17](close)
    c1 = (close > indicator1)
    indicator2 = MACDline[12,26,9](close)
    c2 = (indicator2 < 0.1)
    indicator3 = MACDline[12,26,9](close)
    indicator4 = MACDSignal[12,26,9](close)
    Once CrossOverLevel     = 0
    Once PrevCrossOverLevel = 0
    Once CrossOver          = 0
    CrossOver    = indicator3 crosses over indicator4
    If CrossOver then
       PrevCrossOverLevel = CrossOverLevel
       CrossOverLevel     = indicator3
       If CrossOverLevel < PrevCrossOverLevel or PrevCrossOverLevel = 0 Then
          CrossOver = 0
       Endif
    Endif
    Cond = c1 AND c2 AND CrossOver
    RETURN Cond AS "Cond"

    Ich schlage vor, Sie drücken die Tastenkombination Ctrl+M auf der Plattform und fordern Erklärungen vom Support von ProRealTime an.

Viewing 9 posts - 1 through 9 (of 9 total)
  • You must be logged in to reply to this topic.

entry wenn vorheriges crossing over tiefer war


ProOrder: Automatischer Handel & Backtesting

New Reply
Author
author-avatar
axmichi @axmichi Participant
Summary

This topic contains 8 replies,
has 2 voices, and was last updated by robertogozzi
4 years, 11 months ago.

Topic Details
Forum: ProOrder: Automatischer Handel & Backtesting
Language: German
Started: 03/10/2021
Status: Active
Attachments: 2 files
Logo Logo
Loading...