doubleMagic, Lot;int start()
{
double Price=iOpen (Symbol (),0,0);
int last_order_bar = 0;
int ot = OrdersTotal();
if (ot>0) //если есть ордера в рынке
{
if (OrderSelect (ot-1,SELECT_BY_POS))
if (OrderType ()==OP_BUY || OrderType ()==OP_SELL )
last_order_bar = iBarShift (Symbol (),0,OrderOpenTime ());
}
int last_hist_order_bar = 0;
int oht = OrdersHistoryTotal();
if (oht>0)
{
if (OrderSelect (oht-1,SELECT_BY_POS, MODE_HISTORY))
if (OrderType ()==OP_BUY || OrderType ()==OP_SELL)
last_hist_order_bar = iBarShift (Symbol (),0,OrderOpenTime ());
}
if (ot==0)
if (Bid ==Price)
//=============================================================== if(((Open[1]-Close[1])>100*Point)&&((Open[1]-Close[1])<120*Point))
if(((High[1]-Open[1])>40*Point)&&((High[1]-Open[1])<60*Point))
if(((Close[1]-Low[1])>40*Point)&&((Close[1]-Low[1])<60*Point))
//============================================================
// задавать минимальное значение лота я не стал,мне кажется для тестера это не обязательноif (isCloseLastPosByStop(Symbol(), OP_BUY, Magic, Lot))
{Lot=Lot*2;OrderSend(Symbol(),OP_SELL,Lot,Bid,1,Ask+1500*Point,Ask-300*Point,"jfh",123 );
}
else
{
Lot=0.1;
OrderSend(Symbol(),OP_SELL,1,Bid,Lot,Ask+1500*Point,Ask-300*Point,"jfh",123 );
}
return(0);
}
//============================================================ bool isCloseLastPosByStop(string sy, int op, int mn, double ll) //у Вас перед названием формального параметра 11 стоял знак &- я его убрал.
{
double pt;
datetime t; //у вас тип переменной t был int - я сделал datetimeint dg, i, j=-1, k=OrdersHistoryTotal()-1;
for (i=k; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderMagicNumber()!=mn) continue; // если магик не тот, переходим к следующемуif (OrderSymbol()!=sy) continue; // если символ не тот, переходим к следующемуif (OrderType()!=op) continue; // если тип не тот, переходим к следующемуif (t<OrderCloseTime())
{
t=OrderCloseTime();
j=i;
}
}
}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY))
{
dg=MarketInfo(OrderSymbol(), MODE_DIGITS); // количество знаков в цене символа ордера
pt=MarketInfo(OrderSymbol(), MODE_POINT); // размер пункта инструмента в валюте котировки ордераif (MathAbs(OrderClosePrice()-OrderStopLoss())< 0.5*pt) // Если закрыт по стопу
{
ll=OrderLots(); // записываем количество лотов в ордере, закрытом по стопуreturn(true); // возвращаем истину
}
}
return(False); // возвращаем ложь (позиции нету, либо не по стопу)
}
晚上好。
请告诉我如何在交易周结束时增加关闭所有头寸和删除所有订单?
谢谢你!
晚上好。
请告诉我如何在交易周结束时增加关闭所有头寸和删除所有订单?
谢谢你!
写一个这样的脚本,然后在你想关闭和删除一切的时候把它扔到图表上。这就是全部...
不客气!
写一个这样的脚本,然后在你想关闭和删除一切的时候把它扔到图表上。重点是...
求你了!
谢谢你:)澄清请求。
我们需要在EA中添加代码,在交易周结束时关闭所有订单和头寸。
能否请你写一下这段代码?
谢谢你:)澄清请求。
我们需要在EA中添加代码,在交易周结束时关闭所有订单和头寸。
能否请你写一下这段代码?
我可以做到这一点。没问题。你曾经自己做过什么吗?这条线并不是为了免费获得一些东西,而是为了帮助那些正在尝试自己编码的人。
在https://book.mql4.com/ru/trading/orderclose,检查了它。
在谷歌上搜索,在论坛上搜索。没有找到。也许我的询问写错了。
我想我应该在新手主题中问一下。
我如何开处方?
当你运行该脚本时。
弹出一个窗口,有 "一般 "和 "输入参数 "选项卡。
有没有可能当我运行脚本时,会弹出一个日期框,我输入日期,点击确定,一切都会正常?
还有,我能不能让脚本记住我最后输入的日期?
确定停止器上最后关闭位置的函数有bool类型,而你试图从它那里返回double类型。相应地,它返回0或1。
我告诉过你,你应该把一个变量的引用传给它。
现在检查一下最后一个Buy,比如说。
像这样...
确定停止器上最后关闭位置的函数有bool类型,而你正试图从它那里返回double类型。相应地,它返回0或1。
我在信中说,你应该在其中增加一个变量的引用传递。
现在检查一下最后一个Buy,比如说。
像这样...
按你说的做了一切。所有编译......,但功能不工作,当测试顾问..... 所有位置顾问打开0.1手。
请告诉我我的错误是什么。
我不明白这一点--正如你正确地注意到的,该函数返回的是bool类型的值,但在函数调用中,该函数必须把bool类型的值放在其中。
你建议指定其他价值类型。
谢谢你。
我按你说的做了一切。一切都在编译......,但在测试EA时,该功能不起作用.....,EA的所有位置都开了0.1手。
你能告诉我我的错误是什么吗?
我不明白这一点--正如你正确注意到的,函数返回的是bool类型的值,但在函数调用中,函数应该输入bool类型的值
你是否建议指定其他类型的值。
谢谢你。
你为什么要删除它。如果你离开它,一切都会成功。
为什么要删除它。如果他们有,一切都会成功