Also das Problem der Brokererkennung wird wie folgt gecodet:
int Multiplier = 1;
if(Digits == 3 || Digits == 5) Multiplier = 10;
if(Digits == 6) Multiplier = 100;
TakeProfit *= Multiplier;
StopLoss *= Multiplier;
Slippage *= Multiplier;
TPValue = NormalizeDouble(TakeProfit * Point, Digits);
SLValue = NormalizeDouble(StopLoss * Point, Digits);
usw.
D.h. zuerst wird die Systemkonstante Digits abgefragt. Sollte es ein 4-Digit-Broker sein ändert sich nichts. Beim 5-Digit muß der Multiplier auf 10 gesetzt werden (angenommen, es existiert ein 6-Digit-Broker, dann muß mit 100 multipliziert werden).
Im nächsten Schritt werden die Pipwerte der Variablenangaben im EA-Kopf mit dem Multiplier multipliziert, um dann letztendlich mit der Systemkonstante Point multipliziert und auf die Anzahl der Nachkommastellen, vorgegeben durch Digits, gekürzt zu werden.
Die beiden Variablen TPValue und SLValue können nun im Programm an einer x-beliebigen Stelle benutzt werden, um von den aktuellen Bid- oder Ask-Werten addiert oder subtrahiert zu werden, um z.B. in der OrderSend() benutzbar zu sein.
traderdoc
|