任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 512

 
woin2110:

如果((hi-low)<=max_koridor_v_punktah)
{
int buy = OrderSend(Symbol(), OP_BUYSTOP, LotBuy, OpenBuy, 0, StopLossBuy, 0);//打开购买订单。

如果(buy>0)
{
警报("BuyStop订单已被设置",buy)。
}
int sell= OrderSend(Symbol(), OP_SELLSTOP, LotSell, OpenSell, 0, StopLossSell, 0);//打开卖单。
如果(卖出>0)
{
警报("SellStop order set",sell)。
}
如果(DayOfWeek()==5 && Hour()==22) //在服务器时间周五23:00删除挂单和开单
{
如果(OrderSelect(sell,SELECT_BY_TICKET)==true)
{
OrderClose(sell,OrderLots(),Bid,3,Green);//(Ticket,lot,Close price,slipage in pips,close箭头在图表上的颜色){ Close market order to sell。
OrderDelete(sell);//关闭卖出限制。
}
如果(OrderSelect(buy,SELECT_BY_TICKET)==true)
{
OrderClose(buy,OrderLots(),Ask,3,Red);//(Ticket, lot, close price, slippage in points, color of the close arrow on the chart)/close market order to buy.
OrderDelete(buy);//关闭买入限制。
return(0);
}
}
}

谁能告诉我为什么它不关闭订单,不删除限制?


以买入价关闭买单,以卖出价卖出。
 
isn-88:

以买入价关闭买单,以卖出价卖出。
谢谢
 
AlexeyVik:
init函数中的简单条件 金属、库存和原材料不计入。


谢谢。你能告诉我最简单的方法吗?需要了解这个货币对上是否有敞口头寸。是否有卖单,是否有买单。这意味着,我们需要得到

0 - 如果没有未结订单

1-我有卖单,但没有买单。

2-有买单但没有卖单

3-有两个...

 
woin2110:

https://docs.mql4.com/ru/series

如果(DayOfWeek()==1,2.....)&& Hour()==1,2....)
{
double hi=iHigh(NULL,0,iBarShift(NULL,0,iTime(NULL,PERIOD_D1,0));//定义 high
double low=iLow(NULL,0,iBarShift(NULL,0,iTime(NULL,PERIOD_D1,0));//定义low。

/////////////////////////////////////////////////////////////////////////////////////////////////

double op=iOpen(NULL,0,iBarShift(NULL,0,iTime(NULL,PERIOD_D1,0));//定义打开。


谢谢你!
 
Zolotai:

谢谢。你能告诉我最简单的方法吗?需要了解这个货币对上是否有敞口头寸。是否有卖单,是否有买单。这意味着,我们需要得到

0 - 如果没有未结订单

1-我有卖单,但没有买单。

2-有买单但没有卖单

3-两者都有。

比如说像这样。

int i_buy=0;

int i_sell=0;

//--- получим количество открытых и отложенных ордеров

int total=OrdersTotal();

for(int i=0;i<total;i++)

{

//--- выберем i-й ордер из списка торговли

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)

{

//--- если ордер открыт по текущему финансовому инструменту

if(OrderSymbol()==Symbol())

{

switch(OrderType())

{

//--- Бай ордер

case OP_BUY:

i_buy++;

break;

//--- Селл ордер

case OP_SELL:

i_sell++;

break;

case OP_BUYSTOP:

case OP_BUYLIMIT:

case OP_SELLSTOP:

case OP_SELLLIMIT:

//--- пробойники, лимитники

break;

}

}

}

}


if(i_buy==0 && i_sell==0)

{

//--- нет открытых ордеров

}

if(i_buy>0 && i_sell==0)

{

//--- открыты баи

}

if(i_buy==0 && i_sell>0)

{

//--- открыты селы

}

if(i_buy>0 && i_sell>0)

{

//--- открыты и баи и селы

}

 
isn-88:

例如,像这样。



非常感谢你。我的理解是,asc是目前的价格。我在没有未结订单的情况下开了一个订单。循环从第一个开单到最后一个开单?我怎样才能将最后一个未平仓订单的手数和价格传送到一个变量中?
 
Zolotai:

非常感谢你。我的理解是,asc是目前的价格。 我在没有未结订单的情况下开了一个订单。循环从第一个开单到最后一个开单?我怎样才能把最后一笔订单的手数和价格设置成一个变量?

https://docs.mql4.com/ru/trading/orderselecthttps://docs.mql4.com/ru/trading/orderopenprice https://docs.mql4.com/ru/trading/orderlots

double z; //声明一个变量 "z"。
double y; //declare "y" variable.


如果(OrderSelect(10,SELECT_BY_POS)==true) //如果订单(按票)已经被选中

{

OrderLots()=z //将此订单的手数分配给 "z "变量。

OrderOpenPrice()=y //将开盘价分配给 "y "变量。

}

试试这个

 
woin2110:

https://docs.mql4.com/ru/trading/orderselecthttps://docs.mql4.com/ru/trading/orderopenprice https://docs.mql4.com/ru/trading/orderlots

double z; //declare "z" variable.
double y; //declare "y" variable.


如果(OrderSelect(10,SELECT_BY_POS)==true) //如果订单(按票)已经被选中

{

OrderLots()=z //将此订单的手数分配给 "z "变量。

OrderOpenPrice()=y //将开盘价分配给 "y "变量。

}

试试这个

y = OrderOpenPrice()。


Oops, got it, just don't understand. if((i_buy==0 && i_sell==0) || y > Step).如果与上一个开仓订单的距离超过5个点,应该再开一个订单。但这并不奏效,问题。

for(int i=0;i<total;i++) 它从第一个打开的订单到最后一个?也就是说,我最终应该得到最后开出的订单的价格

 
Zolotai:

y = OrderOpenPrice()。


我不明白如果((i_buy==0 && i_sell==0) || y > Step)。如果与上一个开仓订单的距离超过5个点,应该再开一个订单。但这并不奏效,问题。

for(int i=0;i<total;i++) 它从第一个打开的订单到最后一个?换句话说,我应该得到最后一笔订单的价格


我不知道,我没有遇到过。
 

你好。我在https://forum.mql4.com/ru/51490/page2 上看到一个帖子,其中有一个脚本可以打开EA设置窗口。

这个可以打开EA设置窗口。

//+------------------------------------------------------------------+
//|                                                      EaSetup.mq4 |
//+------------------------------------------------------------------+
//|                                                      EaStart.mq4 |
//|                                 Copyright © 2010, XrustSolution. |
//|                                           mail: xrustx@gmail.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, XrustSolution."
#property link      "mail: xrustx@gmail.com"
#import "user32.dll"
   int   RegisterWindowMessageA(string lpstring);
   int   PostMessageA(int  hWnd,int  Msg,int  wParam,string lParam);
#import
#define WM_COMMAND      0x0111
//+------------------------------------------------------------------+
void start(){Sleep(200);PostMessageA(WindowHandle(Symbol(),Period()), WM_COMMAND, 33048, 0);return;}
//+------------------------------------------------------------------+ 

是否可以让脚本以1秒的间隔打开EA设置窗口,并立即确认(按OK键) ,如此反复?