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 !!!!!
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
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
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
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ß
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
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]
Hallo, danke aber der screener funktioniert leider nicht, er findet keine crosses over
siehe Bild
Danke
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.