// Параметры советникаinputstring sParametersEA = ""; // Параметры советникаinputdouble Lot = 0.01; // Количество лотовinputdouble Lotcontrol = 0.08; // ----- inputint StopLoss = 30; // Стоп (SL)inputint TakeProfit = 30; // Тейк (TP)inputint HourPause = 1; // Пауза в часахinputint Slippage = 3; // Проскальзование (в пунктах)inputint Magic = 1; // Индентификатор советникаinputdouble K_Martin1 = 0.01; // Множитель мартин 1inputdouble K_Martin2 = 1.9; // Множитель мартин 2inputdouble K_Martin3 = 1.4; // Множитель мартин 3inputint OrdersClose = 3; // Ограничение лотности мартин1inputint OrdersClose2 = 5; // Ограничение лотности мартин2inputint DigitsLot = 2; // Точность лотности// Параметры индикатораinputstring sParametersMA = ""; // Параметры индикатораinputint PeriodMA = 14; // Период мувингаinputint MovingShift = 1; // Сдвиг мувинга// Глобальные переменныеdatetime Start=0,newbar;
double dMA;
double MaxMartinLot;
double MaxMartinLot2;
//+-----------------------------------------------------------------------------------------------+intOnInit()
{
Start = TimeCurrent();
MaxMartinLot = Lot*MathPow(1.4,OrdersClose);
MaxMartinLot2 = Lot*MathPow(K_Martin2,OrdersClose2);
int Y = 15;
DrawLABEL("nextlot",1,5,Y,clrLime,"");
Y += 20;
DrawLABEL("currentlot",1,5,Y,clrLime,"");
Y += 30;
return(INIT_SUCCEEDED);
}
//+-----------------------------------------------------------------------------------------------+voidOnDeinit(constint reason)
{
}
//+-----------------------------------------------------------------------------------------------+voidOnTick()
{
// Получим значение индикатора
dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 0); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.// выключаем торговлю if (OrderLots()>=Lotcontrol)
{
Start=TimeCurrent()+(HourPause*60*60);
}
// Если нет открытых ордеров, то входим в условиеif((CountOrders()==0)&& Start<=TimeCurrent())
{// Если появился сигнал на покупку, то откроем ордер на покупкуif(bSignalBuy() == true)
vOrderOpenBuy();
// Если появился сигнал на продажу, то откроем ордер на продажуif(bSignalSell() == true)
vOrderOpenSell();
}
// Пишем какой лот текущий и какой следующий
DrawLABEL("nextlot",1,5,0,Color1(),StringConcatenate("CURRENT LOT: ",DoubleToStr(LOT(),2)));
DrawLABEL("currentlot",1,5,0,Color2(),StringConcatenate("NEXT LOT: ",DoubleToStr(LOT(),2)));
}
scheint zusammengebaut worden zu sein, aber es funktioniert nur einmal im Testgerät
Wenn ich einen weiteren Test durchführe, wird kein Geschäft eröffnet.
Wenn ich den ersten Test durchführe, wird das Intervall eingestellt, aber wenn das Lot auf das Startlot zurückgesetzt wird, werden keine weiteren Geschäfte eröffnet.
scheint zusammengebaut worden zu sein, aber es funktioniert nur einmal im Testgerät
Wenn ich einen weiteren Test durchführe, wird kein Geschäft eröffnet.
Wenn ich den ersten Test durchführe, wird das Intervall festgelegt, aber wenn das Lot auf das Startlot zurückgesetzt wird, werden keine weiteren Geschäfte eröffnet.
Wo habe ich einen Fehler gemacht?
Drücken Sie öfters f1, bevor Sie auf Funktionen klicken und lesen:
Die Bestellung muss mit der Funktion OrderSelect() vorausgewählt werden.
scheint zusammengebaut worden zu sein, aber es funktioniert nur einmal im Testgerät
Wenn ich einen weiteren Test durchführe, wird kein Geschäft eröffnet.
Wenn ich den ersten Test durchführe, wird das Intervall eingestellt, aber wenn das Lot auf das Startlot zurückgesetzt wird, werden keine weiteren Geschäfte eröffnet.
Was habe ich falsch gemacht?
Präsentiert von
Versuchen Sie diese Funktion:
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает сумму лотов открытых позиций |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+double GetAmountLotFromOpenPos(string sy="",int op=-1,int mn=-1)
{
double l=0;
int i,k=OrdersTotal();
if(sy=="0") sy=Symbol();
for(i=0; i<k; i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==sy || sy=="")
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(op<0 || OrderType()==op)
{
if(mn<0 || OrderMagicNumber()==mn)
{
l+=OrderLots();
}
}
}
}
}
}
return(l);
}
scheint zusammengebaut worden zu sein, aber es funktioniert nur einmal im Testgerät
Wenn ich einen weiteren Test durchführe, wird kein Geschäft eröffnet.
Wenn ich den ersten Test durchführe, wird das Intervall eingestellt, aber wenn das Lot auf das Startlot zurückgesetzt wird, werden keine weiteren Geschäfte eröffnet.
Was habe ich falsch gemacht?
scheint zusammengebaut worden zu sein, aber es funktioniert nur einmal im Testgerät
Wenn ich einen weiteren Test durchführe, wird kein Geschäft eröffnet.
Wenn ich den ersten Test durchführe, wird das Intervall festgelegt, aber wenn das Lot auf das Startlot zurückgesetzt wird, werden keine weiteren Geschäfte eröffnet.
Wo habe ich einen Fehler gemacht?
Drücken Sie öfters f1, bevor Sie auf Funktionen klicken und lesen:
Die Bestellung muss mit der Funktion OrderSelect() vorausgewählt werden.
Dies ist für die Funktion OrderLots();
Tut mir leid, dass ich betrunken bin.
Frohes neues Jahr!
scheint zusammengebaut worden zu sein, aber es funktioniert nur einmal im Testgerät
Wenn ich einen weiteren Test durchführe, wird kein Geschäft eröffnet.
Wenn ich den ersten Test durchführe, wird das Intervall eingestellt, aber wenn das Lot auf das Startlot zurückgesetzt wird, werden keine weiteren Geschäfte eröffnet.
Was habe ich falsch gemacht?
Präsentiert von
Versuchen Sie diese Funktion:
Geschenk
Probieren Sie diese Funktion aus:
Danke!) Frohe Festtage)
Ja. Ich habe es so einfach wie möglich gemacht, in die App eingesteckt und es funktioniert.
Danke!) Frohes neues Jahr!)
Jederzeit!
Ich glaube, ich habe es geschafft, aber es funktioniert nur einmal im Testprogramm.
Was habe ich falsch gemacht?
Der Debugger ist gut geeignet, um solche Probleme zu lösen. Ich empfehle es zu verwenden
Und Sie rufen es in mql5 im TestLib-Kontext auf? Es sollte heißen: TestLib::TestClass::Inc()
Dankeschön
scheint zusammengebaut zu sein, aber es funktioniert nur einmal im Testgerät
Was habe ich falsch gemacht?Ich danke Ihnen.
Und ichhabe ein void für getInfoLastPos().... verwendet.