[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 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); 
Das funktioniert so
 
abolk:

So funktioniert es!
Ich danke Ihnen!
 
Sorento:
Ich danke Ihnen!


Im Allgemeinen ist es für MÜ-Entwickler an der Zeit, einen Abschnitt in der Dokumentation zu erstellen und das Problem und die Notwendigkeit der Normalisierung ausführlich zu erklären.

Für diese Situation gibt es in der Dokumentation nur ein bescheidenes Beispiel ohne Hervorhebung:

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

Abschnitt "Typenansatz" https://docs.mql4.com/ru/basis/types/casting

 
Roger:

An FoxUA.

Wenn Order 3 (Verkaufen) geschlossen wird, ist Order 1 (Kaufen) immer noch semaphorisch, dass sie mit Stop Loss geschlossen wurde, und so werden 2 Orders in einer Reihe platziert, da Total=1.


d.h. ich suche nach einer Lösung für dieses Problem, d.h. was kann ich anstelle von total 1 tun, um diesen Effekt zu beseitigen
 
Können Sie mir sagen, ob das Skript Aufträge nicht nur in dem Fenster des Charts öffnen kann, an das es angehängt ist, sondern auch auf anderen Währungspaaren, wenn es richtig vorgeschrieben ist, auf welchen anderen Währungspaaren Sie öffnen müssen?
 
CreAndr:
Können Sie mir sagen, ob das Skript Aufträge nicht nur in dem Fenster des Charts öffnen kann, an das es angehängt ist, sondern auch auf anderen Währungspaaren, wenn es richtig vorgeschrieben ist, auf welchen anderen Währungspaaren Sie öffnen müssen?

vielleicht
 
abolk:

vielleicht
#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);

}


aber diese Option, wird sie funktionieren oder nicht?
Dateien:
 
CreAndr:

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


aber diese Option, wird sie funktionieren oder nicht?


Nein, das, was Sie markiert haben, wird vom aktuellen Werkzeug zurückgegeben. Gebote, Nachfragen, Ziffern usw. sollten mit MarketInfo angefordert werden, wobei das Tool ausdrücklich anzugeben ist
 
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);

}

Aber wird diese Option funktionieren oder nicht?


Nein. Sie müssen die Funktion MarketInfo https://docs.mql4.com/ru/common/MarketInfo verwenden .

Auf der Seite finden Sie Beispiele für Ihr Problem

 
Ich danke Ihnen für Ihre Hilfe.