interpretazione grafico risultati metatrader

Sezione dedicata a metatrader (ed altre piattaforme) ed al suo linguaggio di programmazione per il trading automatico
pasquale87
Messaggi: 3
Iscritto il: 14/01/2021, 10:14

interpretazione grafico risultati metatrader

Messaggio da pasquale87 »

Buongiorno a tutti,
mi sto avventurando nel mondo mql e metatrader. Ho scritto un semplice EA che usa l'oscillatore stocastico, e ho fatto del backtesting di due giorni per avere pochi segnali e poterli studiare singolarmente. Allego uno screenshot per comprendere meglio la situazione, ho due domande sul grafico:
01) il fatto che si aprano piu posizioni su una stessa candela è dovuto al fatto che devi chiudere la posizione prima di aprirne un'altra?
02) se sì, come dovrei fare a chiudere la posizione prima di aprirne un' altra? Ho provato a verificare se esistono posizioni aperte prima di lanciare orderSend() (verificando PositionsTotal()<1), ma non sta funzionando. Allego anche del codice così mi spiego meglio:

...
if (PositionsTotal()<1) {
openOrder(signal);
}
...
void openOrder(string signal) {

MqlTradeRequest request={0};
MqlTradeResult response={0};

double tp = 0.0;
double sl = 0.0;
if (signal == "sell") {
double prezzo_corrente = SymbolInfoDouble(_Symbol,SYMBOL_BID);
tp = prezzo_corrente - 0.002;
sl = prezzo_corrente + 0.001;
request.price = prezzo_corrente;
request.type = ORDER_TYPE_SELL;
}
if (signal == "buy") {
double prezzo_corrente = SymbolInfoDouble(_Symbol,SYMBOL_ASK);
tp = prezzo_corrente + 0.002;
sl = prezzo_corrente - 0.001;
request.price = prezzo_corrente;
request.type = ORDER_TYPE_BUY;
}

request.action = TRADE_ACTION_DEAL;
request.symbol =_Symbol;
request.volume = 0.01;
request.type_filling = ORDER_FILLING_FOK;
request.tp = tp;
request.sl = sl;
request.deviation = 5;

if (!PositionSelect(_Symbol)) {
bool risp = OrderSend(request, response);
if(!risp) {
PrintFormat("OrderSend error: %d", response.retcode);
} else {
PrintFormat("DONE: DEAL=%I64u ORDER=%I64u", response.deal,response.order);
Print("ACCOUNT PROFIT = ", AccountInfoDouble(ACCOUNT_PROFIT));
}
}
}
03) Dopo ogni operazione, AccountInfoDouble(ACCOUNT_PROFIT) mi restituisce sempre lo stesso risultato

Scusate se il messaggio è un po lungo :D
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.

Chi c’è in linea

Visitano il forum: CC [Bot] e 0 ospiti