Guten Tag. Ich lerne gerade, Code zu schreiben, und habe ein Problem. Der Code im Tester läuft, eröffnet einen Handel und das war's. Der Preis ändert sich nicht, alles bleibt auf der Stelle stehen.
Wer keine Schwierigkeiten hat, bitte beraten.
if (CountTrades() == 0)
{
double body = Close[1] - Open[1];
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx////Открытие позиции Buyif (body > 0)
{
Forder = (OrderSend(_Symbol,OP_BUY,Lot,Ask,Slippage,0,0,"Коммент",Magic,0,Blue));
{
Print("Открыта Позиция BUY");
{
if(Forder > 0)
{
TP = NormalizeDouble((Ask+TakeProfit*_Point+OrderSwap()+OrderCommission()),_Digits);
Forder = OrderModify(Forder,OrderOpenPrice(),0,TP,0);
}Print("Ордер Модифицирован BUY ");
}Print("Ошибка Модификации Ордера BUY");
}
}Print("Ошибка Открытия Позиции BUY");
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx////Открытие позиции Sell if (body < 0)
{
Forder = (OrderSend(_Symbol,OP_SELL,Lot,Bid,Slippage,0,0,"Коммент Sell",Magic,0,Red));
{
Print("Открыта Позиция SELL");
{
if(Forder > 0)
{
TP = NormalizeDouble((Bid-TakeProfit*_Point+OrderSwap()+OrderCommission()),_Digits);
Forder = OrderModify(Forder,OrderOpenPrice(),0,TP,0);
}Print("Ордер Модифицирован SELL ");
}Print("Ошибка Модификации Ордера SELL");
}
}Print("Ошибка Открытия Позиции Sell");
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx//
}
Guten Tag. Ich lerne gerade, Code zu schreiben, und habe ein Problem. Der Code im Tester läuft, eröffnet einen Handel und das war's. Der Preis ändert sich nicht, alles bleibt auf der Stelle stehen.
Ich glaube nicht, dass das das Problem ist, es ist einfach nicht richtig. Und was das Einfrieren des Testers angeht, so sollten Sie besser den gesamten Code posten und wir werden sehen.
OrderCommission()*_Point
Auch das ist nicht richtig.
Punkte sind Dezimalstellen und werden nicht in Punkte umgerechnet.
Ich glaube nicht, dass das das Problem ist, es ist einfach nicht richtig. Und was das Einfrieren des Testers angeht, so sollten Sie besser den gesamten Code posten und nachsehen.
Auch das ist nicht richtig.
Punkt ist eine Dezimalstelle und wird in keiner Weise in Punkte umgerechnet.
int Login = 4950287;
datetime time = D'2022.01.01 00:00:00';
string name = "AutoP_v.3.0";
datetime time1 = 0;
double price, TP, lastlot, minlot;
int Forder;
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx////+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
if(AccountNumber() != Login)
{
int close = MessageBox("Неверный номер счёта","Ошибка",MB_OK|MB_ICONSTOP);
return(INIT_FAILED);
}else (AccountNumber() == Login);
{
int close = MessageBox("Проверка прошла успешно.Экcперт может приступить к работе.","Инициализация",MB_OK|MB_ICONEXCLAMATION);
}
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// if (TimeCurrent() > time)
{
int close = MessageBox("Время работы закончилось!!!","Время работы",MB_OK|MB_ICONSTOP);
return(INIT_FAILED);
}else(TimeCurrent() < time);
{
int close = MessageBox("Проверка времени работы прошла успешно.Эксперт может приступить к работе!","Время работы",MB_OK|MB_ICONEXCLAMATION);
}
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx//if(Digits == 3 || Digits == 5)
{
TakeProfit *=10;
TrailStart *=10;
TrailDist *=10;
TrailStep *=10;
TrailTakeProfit *=10;
Step *=10;
Slippage *=10;
}
return(INIT_SUCCEEDED);
}
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx////+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
//---
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
double body = Close[1] - Open[1];
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx////Открытие позиции Buyif (body > 0)
{
Forder = (OrderSend(_Symbol,OP_BUY,Lot,Ask,Slippage,0,0,"Коммент",Magic,0,Blue));
{
Print("Открыта Позиция BUY");
{
if(Forder > 0)
if(OrderSelect(Forder, SELECT_BY_TICKET))
{
TP = NormalizeDouble((Ask+TakeProfit*_Point),_Digits);
if (OrderModify(OrderTicket(),OrderOpenPrice(),0,TP,0))
Print("Ордер Модифицирован BUY ");
elsePrint("Ошибка Модификации Ордера BUY = ",GetLastError());
}
}
}Print("Ошибка Открытия Позиции BUY");
}
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx////Открытие позиции Sell if (body < 0)
{
Forder = (OrderSend(_Symbol,OP_SELL,Lot,Bid,Slippage,0,0,"Коммент Sell",Magic,0,Red));
{
Print("Открыта Позиция SELL");
if (Forder > 0)
if(OrderSelect(Forder, SELECT_BY_TICKET))
{
TP = NormalizeDouble((Bid-TakeProfit*_Point),_Digits);
if (OrderModify(OrderTicket(),OrderOpenPrice(),0,TP,0))
Print("Ордер Модифицирован SELL ");
elsePrint("Ошибка Модификации Ордера SELL = ",GetLastError());
}
}
}Print("Ошибка Открытия Позиции BUY");}
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx//
}
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx////+------------------------------------------------------------------+//| Tester function |//+------------------------------------------------------------------+doubleOnTester()
{
//---double ret=0.0;
//---//---return(ret);
}
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx//int CountTrades()
{
int count = 0;
for(int i = OrdersTotal()-1; i>=0; i++ )
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol() == _Symbol && OrderMagicNumber() == Magic)
{
count++;
}
}
}return (count);
}
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx//
Guten Tag. Ich lerne gerade, Code zu schreiben, und habe ein Problem. Der Code im Tester läuft, eröffnet einen Handel und das war's. Der Preis ändert sich nicht, alles bleibt auf der Stelle stehen.
Wer keine Schwierigkeiten hat, bitte beraten.
Guten Tag. Ich lerne gerade, Code zu schreiben, und habe ein Problem. Der Code im Tester läuft, eröffnet einen Handel und das war's. Der Preis ändert sich nicht, alles bleibt auf der Stelle stehen.
Wer nichts dagegen hat, bitte beraten.
Ask+TakeProfit*_Point+OrderSwap()+OrderCommission()Wie kann man Swap und Provision auf den Preis aufschlagen?
Wie kann man Swap und Provision auf den Preis aufschlagen?
Wie mache ich das?)
Glauben Sie, dass dies ein Problem darstellt?
Woher ich weiß, wie man zählt.)
Glauben Sie, dass das das Problem ist?
Erstens: Wenn Sie einen Swap öffnen, gibt es keinen Swap.
Zweitens, nehmen wir an, die Kommission von 1$ Sie öffnen eine Bestellung auf das Pfund bei 1,32500
Sie addieren (TakeProfit) 200*_Point und (Kommission) 1$ und erhalten einen TP von 2.32700 ... In welchem Jahrzehnt wird das sein?
onTimer zu onTick hinzufügen
Dankeschön
Woher ich weiß, wie man zählt.)
Glauben Sie, dass das das Problem ist?
Nein, das ist nicht richtig.
Bei OrderModify ist das eher der Fall.
Und besser als separater Block.
Woher ich weiß, wie man zählt.)
Glauben Sie, dass das das Problem ist?
Ich glaube nicht, dass das das Problem ist, es ist einfach nicht richtig. Und was das Einfrieren des Testers angeht, so sollten Sie besser den gesamten Code posten und wir werden sehen.
OrderCommission()*_PointAuch das ist nicht richtig.
Punkte sind Dezimalstellen und werden nicht in Punkte umgerechnet.Ich glaube nicht, dass das das Problem ist, es ist einfach nicht richtig. Und was das Einfrieren des Testers angeht, so sollten Sie besser den gesamten Code posten und nachsehen.
Auch das ist nicht richtig.
Punkt ist eine Dezimalstelle und wird in keiner Weise in Punkte umgerechnet.Es ist alles da. Vielen Dank für Ihre Hilfe.