Wie programmiert man? - Seite 118

 

für CEHansen

Hallo,

In dem Teil, in dem du die Balken einzeln nimmst, musst du überall die Variable i anstelle von Current verwenden. Current ist uninitialisiert, also ist es 0.

Der einfachste Weg, das zu sehen, ist, innerhalb des for am Anfang folgendes zu schreiben:

Current = i;

Die Pfeile werden erscheinen. Vergessen Sie auch nicht, einen größeren Wert für Sto_Lookback zu verwenden. Vielleicht 100,1000 oder etwas in der Art.

P.S. Mach das for so, das ist aus meiner Sicht besser.

for (int i = Sto_Lookback; i >0; i--){

...

}

Weil das die normale Art und Weise ist, wie die "Balken" kommen, 0 ist der letzte. Das würde Ihnen später einige andere Probleme ersparen. (z.B. - neu malen). Nur ein Gedanke.

Vielen Dank!

Victor

 
 

Klinger Volumen Oszillator

Ich habe mir diesen Indikator angeschaut, er sieht interessant aus.

Allerdings beruht er zum Teil auf dem Volumen, das im Forex nicht wirklich verfügbar ist.

Großes Be

 

Order Modify Fehler 1

Bei meinem Backtesting erhalte ich immer wieder den gelegentlichen "OrderModify error1". Soweit ich weiß, bedeutet dies, dass es keine Änderung gibt, d.h. die OrderModify()-Argumente sind die gleichen wie die entsprechenden Parameter der geänderten Order.

Dies könnte auf ein Problem mit einem doppelten Vergleich zurückzuführen sein.

Die Frage ist, wie kann ich dieses Problem lösen?

Hier ist der Bereich, von dem ich glaube, dass er das Problem verursacht:

if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

fortfahren;

}

//MoveOnce

if(MoveStopOnce && MoveStopWhenPrice > 0) {

if(Bid - OrderOpenPrice() >= Point * MoveStopWhenPrice) {

if(OrderStopLoss() < OrderOpenPrice() + Point * MoveStopTo) {

OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Point * MoveStopTo, OrderTakeProfit(), 0, Red);

if (!EachTickMode) BarCount = Bars;

fortfahren;

}

}

}

//Trailing-Stop

if(UseTrailingStop && TrailingStop > 0) {

if(Bid - OrderOpenPrice() > Point * TrailingStop) {

if(OrderStopLoss() < Bid - Point * TrailingStop) {

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

if (!EachTickMode) BarCount = Bars;

fortfahren;

}

}

}

} sonst {

//Schließen

//+------------------------------------------------------------------+

//| Signal Begin(Exit Sell) |

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//| Signal End(Exit Sell) |

//+------------------------------------------------------------------+

if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

weiter;

}

//MoveOnce

if(MoveStopOnce && MoveStopWhenPrice > 0) {

if(OrderOpenPrice() - Ask >= Point * MoveStopWhenPrice) {

if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo) {

OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red);

if (!EachTickMode) BarCount = Bars;

fortfahren;

}

}

}

//Trailing-Stop

if(UseTrailingStop && TrailingStop > 0) {

if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {

if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {

OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);

if (!EachTickMode) BarCount = Bars;

fortfahren;

}

}

}

}

}

}

 

Code Frage

Was bedeutet i++ oder i-- in der Codierung?

Beispiel: for (int i=5; i>0; i--)

 
matrixebiz:
Was bedeutet i++ oder i-- in der Codierung? z.B.: for (int i=5; i>0; i--)

In C-basierten Sprachen ist dies die Abkürzung für das Inkrementieren oder Dekrementieren einer auf Zahlen basierenden Variablen.

In Visual Basic müssten Sie zum Beispiel schreiben.

i = i + 1 schreiben, um die Variable i zu inkrementieren.

In C können Sie jedoch einfach i++ schreiben.

Hoffentlich hilft das.

Hiachiever

 
hiachiever:
Es ist eine Abkürzung in C-basierten Sprachen für das Inkrementieren oder Dekrementieren einer zahlenbasierten Variablen.

In Visual Basic müssten Sie zum Beispiel schreiben.

i = i + 1 schreiben, um die Variable i zu inkrementieren.

In C können Sie jedoch einfach i++ schreiben.

Ich hoffe, das hilft.

Hiachiever

Danke!

wenn ich also if (int i=6; i>0; i++)

schreibe, wird es eine Schleife bilden oder den Wert bis zum Höchstwert von 6 überprüfen? ich bin nicht sicher, ob das richtig ist. Was ist, wenn ich i-- verwende? Bitte klären

 
matrixebiz:
Danke!

Wenn ich also if (int i=6; i>0; i++)

es wird eine Schleife durchlaufen oder der Wert wird bis maximal 6 geprüft? ich bin nicht sicher, ob das richtig ist. Was ist, wenn ich i-- verwende? Bitte klären

Matrixebiz,

wenn Sie bei 6 beginnen und bis 0 zurückgehen wollen, dann verwenden Sie i--

(int i=6; i>0; i--)

Dies beginnt bei 6 und dekrementiert in jeder Schleife um 1, solange I > 0 ist.

Wenn Sie 0 einschließen wollen, verwenden Sie i>=0.

Zum Wohl,

Hiachiever

 
hiachiever:
Matrixebiz,

Wenn Sie bei 6 beginnen und bis 0 zurückgehen wollen, verwenden Sie i--

(int i=6; i>0; i--)

Dies beginnt bei 6 und dekrementiert in jeder Schleife um 1, solange I > 0 ist.

Wenn Sie 0 einschließen wollen, verwenden Sie i>=0.

Zum Wohl,

Hiachiever

Ok, wenn ich also if (int i=6; i>0; i++)

setze, dann beginnt es bei 6 und geht weiter mit 1, 2, 3 ... 6, richtig?

 
matrixebiz:
Ok, wenn ich also if (int i=6; i>0; i++) einfüge, dann beginnt es bei 6 und geht weiter mit 1, 2, 3 ... 6, richtig?

Nicht ganz, wenn das, was Sie dort tun wollen, bei 6 endet.

Der Code würde in diesem Fall lauten

For (int i=1; i<=6; i++)

Dies beginnt bei 1 und endet bei 6, wobei in jeder Schleife um 1 erhöht wird.

Zum Wohl,

Hiachiever