Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 51
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
Forse non ho capito la mia domanda.
Essendo sul grafico del periodo M1 voglio riempire il buffer se sul periodo M5, la linea dell'indicatore "Stocastico" è ora sopra il livello 55.
////////////////////////////////////////////////
for(int i=limit; i>=0; i--) {
int bar_sto2_0=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i));
int bar_sto2_1=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i+1));
double sto2_0=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_0);
double sto2_1=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_1);
if(sto2_0>55.0)
{
BufferUP[i]=low[i]-distance*MyPoint;
}
if(sto2_0<44.0)
{
BufferDN[i]=high[i]+distance*MyPoint;
}
Comment(sto2_0);
}
Nel commento il valore attuale è corretto con M5, ma sulla storia le frecce non mettono in condizione, caos.
Cosa può essere?
Nel " seminterrato" la stocastica di M5
Le frecce sono cerchiate non secondo il segnale
Sto scrivendo un Expert Advisor che piazza contemporaneamente due StopOrders, uno per vendere e uno per comprare.
Come scrivo la condizione che quando uno StopOrder scatta, il secondo (opposto) viene cancellato?
Grazie.
Sto scrivendo un Expert Advisor che piazza contemporaneamente due StopOrders, uno per vendere e uno per comprare.
Come scrivo la condizione che quando uno StopOrder scatta, il secondo (opposto) viene cancellato?
Grazie.
La condizione è semplice. Quando scatta uno StopOrder, una posizione appare nel mercato, significa che dobbiamo seguire la posizione e se esiste, dobbiamo cancellare l'ordine opposto.
Questo è un pezzo di codice per pensare)
bool b, s;
switch(op) {
case OP_BUY : b=ExistPositions(sy, OP_BUY , mn); break;
case OP_SELL: s=ExistPositions(sy, OP_SELL, mn); break;
}
if(b) {
DeleteOrders(sy, OP_SELLLIMIT, mn, cl);
DeleteOrders(sy, OP_SELLSTOP , mn, cl);
}
if(s) {
DeleteOrders(sy, OP_BUYLIMIT, mn, cl);
DeleteOrders(sy, OP_BUYSTOP , mn, cl);
}}
Vitaly Muzichenko, per quanto ho capito, ora dobbiamo aggiungere le funzioniExistPositions eDeleteOrders
Vitaly Muzichenko, per quanto ho capito, ora dobbiamo scrivere le funzioniExistPositions eDeleteOrders
Non c 'è bisogno di scriverli, sono entrambigià pronti.
Beh ..., per scopi educativi è abbastanza utile ...
Per scopi pratici, è molto costoso eseguire cicli in ogni funzione.
Beh..., per scopi di formazione è molto utile...
Per scopi pratici, è molto costoso eseguire cicli in ogni funzione.
Cosa fare se lo stop/stop è 200
ma
tp=NormalizeDouble((price+(TakeProfit*_Point)),Digits);
su un dollaro-yen renderà 317.000 al tasso di cambio di 117.000
il risultato atteso è 117.200
Cosa fare se lo stop/stop è 200
ma
tp=NormalizeDouble((price+(TakeProfit*_Point)),Digits);
su un dollaro-yen renderà 317.000 al tasso di cambio di 117.000
il risultato atteso è 117.200
Perché così tante parentesi? È una questione di gusti, naturalmente, ma ancora troppo.
tp=NormalizeDouble(price+TakeProfit*_Point,_Digits);
I valori sono sostituiti in modo errato se il risultato non è corretto nell'output, perché questa linea di codice calcolerà tutto correttamente, anche con parentesi extra.