Bon après-midi. J'apprends à écrire du code et j'ai un problème. Le code dans le testeur s'exécute, ouvre une transaction et c'est tout. Le prix ne change pas, tout reste en place.
Qui n'est pas difficile, veuillez me conseiller.
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//
}
Bon après-midi. J'apprends à écrire du code et j'ai un problème. Le code dans le testeur s'exécute, ouvre une transaction et c'est tout. Le prix ne change pas, tout reste en place.
Comment faire pour que la fonction Commentaire ou Imprimer dans le journal de la fonction OnTimer fonctionne dans le testeur pendant la visualisation ?
Je ne pense pas que ce soit le problème, ce n'est juste pas bien. Et pour ce qui est du gel du testeur, vous feriez mieux de poster le code entier et nous verrons.
OrderCommission()*_Point
Ce n'est pas bien non plus.
Les points sont des décimales et ne se transforment en aucun cas en points.
Je ne pense pas que ce soit le problème, ce n'est juste pas bien. Et pour ce qui est du gel du testeur, vous feriez mieux de poster tout le code et de voir.
Ce n'est pas bien non plus.
Le point est décimal et ne se traduit en aucun cas en points.
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//
Bon après-midi. J'apprends à écrire du code et j'ai un problème. Le code dans le testeur s'exécute, ouvre une transaction et c'est tout. Le prix ne change pas, tout reste en place.
Qui n'est pas difficile, veuillez me conseiller.
Bon après-midi. J'apprends à écrire du code et j'ai un problème. Le code dans le testeur s'exécute, ouvre une transaction et c'est tout. Le prix ne change pas, tout reste en place.
Si ça ne vous dérange pas, dites-le moi.
Ask+TakeProfit*_Point+OrderSwap()+OrderCommission()Comment ajoutez-vous le swap et la commission au prix ?
Comment ajoutez-vous le swap et la commission au prix ?
Comment dois-je faire ?)
Pensez-vous que c'est un problème ?
Comme je sais compter.)
Vous pensez que c'est le problème ?
Premièrement, lorsque vous ouvrez un swap, il n'y a pas de swap.
Deuxièmement, supposons que la commission de 1$ vous ouvre un ordre sur la livre à 1.32500
vous ajoutez (TakeProfit) 200*_Point et (commission) 1$ et vous obtenez un TP de 2.32700 ... Dans quelle décennie serait-ce ?
Ajouter onTimer à onTick
Merci.
Comme je sais compter.)
Vous pensez que c'est le problème ?
Non, ce n'est pas bien.
Avec OrderModify, c'est plus correct.
Et mieux comme un bloc séparé.
Comme je sais compter.)
Vous pensez que c'est le problème ?
Je ne pense pas que ce soit le problème, ce n'est juste pas bien. Et pour ce qui est du gel du testeur, vous feriez mieux de poster le code entier et nous verrons.
OrderCommission()*_PointCe n'est pas bien non plus.
Les points sont des décimales et ne se transforment en aucun cas en points.Je ne pense pas que ce soit le problème, ce n'est juste pas bien. Et pour ce qui est du gel du testeur, vous feriez mieux de poster tout le code et de voir.
Ce n'est pas bien non plus.
Le point est décimal et ne se traduit en aucun cas en points.Tout est là. Merci pour votre aide.