[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 287

 
Sorento:
2011.03.30 08:40:21 USDCAD,M1: 3 4 4.00000000 ask=0.9729 bid=0.9725


int Ret[3];

Ret[0]=NormalizeDouble((Ask-Bid)/Point,0); 
Print (Ret[0]," ",(Ask-Bid)/Point," ask=",Ask," bid=",Bid); 
funziona così
 
abolk:

funziona così!
Grazie!
 
Sorento:
Grazie!


In generale, è il momento per gli sviluppatori di MT di creare una sezione nella documentazione e spiegare in dettaglio il problema e la necessità di usare la normalizzazione.

C'è solo un modesto esempio senza enfasi nella documentazione per questa situazione:

int    i = 1 / 2.0;   // выражение приводится к типу double, затем приводится к целевому типу int, результат: 0

Sezione "Approccio al tipo" https://docs.mql4.com/ru/basis/types/casting

 
Roger:

A FoxUA.

Quando l'ordine 3 (Sell) viene chiuso, l'ordine 1 (Buy) ancora semaforizza che è stato chiuso su Stop Loss e così vengono piazzati 2 ordini in fila, perché Total=1.


cioè cerco una soluzione a questo problema, cioè cosa sostituire il totale 1 per sbarazzarsi di tale effetto
 
Puoi dirmi se lo script può aprire ordini non solo nella finestra del grafico a cui è collegato, ma anche su altre coppie di valute, se è opportunamente prescritto su quali altre coppie di valute è necessario aprire?
 
CreAndr:
Puoi dirmi se lo script può aprire ordini non solo nella finestra del grafico a cui è collegato, ma anche su altre coppie di valute, se è opportunamente prescritto su quali altre coppie di valute è necessario aprire?

forse
 
abolk:

forse
#property show_inputs
//--------------------------------------------------------------------
extern double TakeProfit = 1000;
extern double Lots = 0.01;
extern double StopLoss = 500.0;
extern int MagNum = 1974;
int slip = 100;


//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()

{
//::::Открытие и выставление ордеров


OrderSend("EURUSD",OP_BUY,Lots,NormalizeDouble(Ask,Digits),slip,NormalizeDouble(Bid - StopLoss*Point,Digits),NormalizeDouble(Ask + TakeProfit * Point,Digits),"CleverEA",MagNum,0,Green);
OrderSend("GBPUSD",OP_BUY,Lots,NormalizeDouble(Ask,Digits),slip,NormalizeDouble(Bid - StopLoss*Point,Digits),NormalizeDouble(Ask + TakeProfit * Point,Digits),"CleverEA",MagNum,0,Green);
OrderSend("USDJPY",OP_SELL,Lots,NormalizeDouble(Bid,Digits),slip,NormalizeDouble(Ask + StopLoss*Point,Digits),NormalizeDouble(Bid - TakeProfit * Point,Digits),"CleverEA",MagNum,0,Red);
OrderSend("USDCHF",OP_SELL,Lots,NormalizeDouble(Bid,Digits),slip,NormalizeDouble(Ask + StopLoss*Point,Digits),NormalizeDouble(Bid - TakeProfit * Point,Digits),"CleverEA",MagNum,0,Red);

return (0);

}


ma questa opzione, funzionerà o no?
File:
 
CreAndr:

OrderSend("EURUSD",OP_BUY,Lots,NormalizeDouble(Ask,Digits),slip,NormalizeDouble(Bid - StopLoss*Point,Digits),NormalizeDouble(Ask + TakeProfit * Point,Digits)," CleverEA",MagNum,0,Green);


ma questa opzione, funzionerà o no?


No, quello che avete evidenziato sarà restituito dallo strumento corrente. Offerte, richieste, cifre e così via dovrebbero essere richieste con MarketInfo specificando esplicitamente lo strumento
 
CreAndr:
#property show_inputs
//--------------------------------------------------------------------
extern double TakeProfit = 1000;
extern double Lots = 0.01;
extern double StopLoss = 500.0;
extern int MagNum = 1974;
int slip = 100;


//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()

{
//::::Открытие и выставление ордеров


OrderSend("EURUSD",OP_BUY,Lots,NormalizeDouble(Ask,Digits),slip,NormalizeDouble(Bid - StopLoss*Point,Digits),NormalizeDouble(Ask + TakeProfit * Point,Digits),"CleverEA",MagNum,0,Green);
OrderSend("GBPUSD",OP_BUY,Lots,NormalizeDouble(Ask,Digits),slip,NormalizeDouble(Bid - StopLoss*Point,Digits),NormalizeDouble(Ask + TakeProfit * Point,Digits),"CleverEA",MagNum,0,Green);
OrderSend("USDJPY",OP_SELL,Lots,NormalizeDouble(Bid,Digits),slip,NormalizeDouble(Ask + StopLoss*Point,Digits),NormalizeDouble(Bid - TakeProfit * Point,Digits),"CleverEA",MagNum,0,Red);
OrderSend("USDCHF",OP_SELL,Lots,NormalizeDouble(Bid,Digits),slip,NormalizeDouble(Ask + StopLoss*Point,Digits),NormalizeDouble(Bid - TakeProfit * Point,Digits),"CleverEA",MagNum,0,Red);

return (0);

}

Ma questa opzione funzionerà o no?


Non lo farà. Devi usare la funzione MarketInfo https://docs.mql4.com/ru/common/MarketInfo.

ci sono esempi del tuo problema nella pagina

 
Grazie per il vostro aiuto.
Motivazione: