Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
per CEHansen
Ciao,
All'interno del for dove prendi le barre una per una devi usare ovunque la variabile i invece di Current. Current non è inizializzato quindi è 0.
Il modo più semplice per vederlo è mettere dentro il for all'inizio questo:
Current = i;
Le frecce appariranno. Inoltre non dimenticate di usare un valore più grande per Sto_Lookback. Mabe 100,1000 o qualcosa del genere.
P.S. Usare per fare il for come questo è meglio dal mio punto di vista.
for (int i = Sto_Lookback; i >0; i--){
...
}
Perché questo è il modo normale delle "barre" che arrivano a 0 è l'ultima. Vi salverebbe di alcuni altri trubles più tardi. (per esempio - ridipingere). Solo un pensiero.
Grazie,
Victor
Oscillatore di volume Klinger
Ho cercato questo, sembra un indicatore interessante.
Tuttavia si basa in parte sul volume, che non è realmente disponibile nel Forex.
Grande essere
Errore di modifica dell'ordine 1
Nel mio backtesting continuo a ricevere occasionalmente "OrderModify error1". Da quello che posso capire significa che non c'è nessun cambiamento, cioè gli argomenti di OrderModify() sono gli stessi dei parametri corrispondenti dell'ordine modificato.
Questo potrebbe essere dovuto a un problema di doppio confronto.
La domanda è come potrei risolvere questo problema?
Ecco l'area che credo stia causando il problema:
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 = Falso;
continuare;
}
//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;
continua;
}
}
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > Punto * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = Bars;
continua;
}
}
}
} else {
//Chiudi
//+------------------------------------------------------------------+
//| Segnale Inizio(Esci Vendi) |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Segnale Fine(Esci Vendi) |
//+------------------------------------------------------------------+
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 = Falso;
continuare;
}
//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;
continua;
}
}
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if((OrderOpenPrice() - Ask) > (Punto * TrailingStop)) {
if((OrderStopLoss() > (Ask + Punto * TrailingStop)) || (OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);
if (!EachTickMode) BarCount = Bars;
continuare;
}
}
}
}
}
}
Domanda sul codice
Cosa significa i++ o i-- nella codifica?
Es: for (int i=5; i>0; i--)
Cosa significa i++ o i-- nella codifica? Per esempio: for (int i=5; i>0; i--)
È un'abbreviazione nei linguaggi basati su C per incrementare o decrementare una variabile basata su un numero.
Per esempio in Visual Basic dovreste scrivere.
i = i + 1 per incrementare la variabile i.
Tuttavia, in C puoi semplicemente scrivere i++.
Spero che questo aiuti.
Hiachiever
È un'abbreviazione nei linguaggi basati sul C per incrementare o decrementare una variabile basata su un numero.
Per esempio in Visual Basic dovreste scrivere.
i = i + 1 per incrementare la variabile i.
Tuttavia, in C puoi semplicemente scrivere i++.
Spero che questo aiuti.
HiachieverGrazie,
quindi se metto if (int i=6; i>0; i++)
sarà 'loop' o continuare a controllare il valore fino a 6 max? non sono sicuro che sia giusto. E se uso i--? Si prega di chiarire
Grazie,
quindi se metto if (int i=6; i>0; i++)
sarà 'loop' o continuerà a controllare il valore fino a 6 max? non sono sicuro che sia giusto. Cosa succede se uso i--? Si prega di chiarireMatrixebiz,
se vuoi iniziare da 6 e tornare a 0 allora usa i--
(int i=6; i>0; i--)
Questo inizierà a 6, diminuirà di 1 ad ogni ciclo per tutto il tempo in cui I > 0.
Se volete includere 0 allora usate i>=0.
Grazie,
Hiachiever
Matrixebiz,
se volete iniziare da 6 e tornare a 0 allora usate i--
(int i=6; i>0; i--)
Questo inizierà da 6, decrementerà di 1 ad ogni ciclo per tutto il tempo in cui I > 0.
Se volete includere 0 allora usate i>=0.
Grazie,
HiachieverOk, quindi se metto if (int i=6; i>0; i++)
allora inizierà da 6 poi, ricomincerà ad incrementare 1, 2, 3 ... 6, giusto?
Ok, quindi se metto if (int i=6; i>0; i++) allora inizierà a 6 e poi ricomincerà ad incrementare di 1, 2, 3 ... 6, giusto?
Non proprio se quello che volete fare è finire a 6.
Il codice in questo caso sarebbe
Per (int i=1; i<=6; i++)
Questo inizierà a 1 e finirà a 6 incrementando di 1 ad ogni ciclo.
Grazie,
Hiachiever