//+------------------------------------------------------------------+//| подготовить массив тикетов для закрытия |//+------------------------------------------------------------------+void PrepareTicketsToClose(int signal, bool Revers, int & ticketsClose[][2], double & lots[],double arrayTickets[][9])
{
int size=ArrayRange(arrayTickets,0);
//----if (size==0) return;
int i,type,ticket,closeSize;
for (i=0;i<size;i++)
{
type=arrayTickets[i][1];
// если тип ордера не рыночный, то пропускаемif (type>OP_SELL) continue;
if (Revers) // перевернем тип рыночного ордера
{
if (type==OP_BUY) type=OP_SELL; else type=OP_BUY;
}
// тут решаем для каждого открытого ордера его судьбу// оставить в рынке или добавить в массив на закрытиеif (type==OP_BUY)
{
//// код разрешающий оставить покупку// как примерif (signal==OP_BUY) continue;
}
if (type==OP_SELL)
{
//// код разрешающий оставить продажу// как примерif (signal==OP_SELL) continue;
}
closeSize=ArrayRange(ticketsClose,0);
ArrayResize(ticketsClose,closeSize+1);
ArrayResize(lots,closeSize+1);
ticketsClose[closeSize][0] = arrayTickets[i][0]; // # тикета
ticketsClose[closeSize][1] = arrayTickets[i][1]; // тип ордера// здесь укажем сколько лотов нужно закрыть
lots[closeSize] = arrayTickets[i][2]; // закрываемый объем// можно закрывать частично, тогда нужно переписать строку сверху
}
//----return;
}
//+------------------------------------------------------------------+//| Закрывает ордера с указанными тикетами |//+------------------------------------------------------------------+void CloseMarketOrders(int ticketsArray[][2], double lotsArray[])
{
//----int i,size=ArrayRange(ticketsArray,0);
if (size==0) return;
int ticket,type;
double lots;
bool res;
int total=OrdersTotal();
for (i=0;i<size;i++)
{
ticket = ticketsArray[i][0];
type = ticketsArray[i][1];
lots = lotsArray[i];
RefreshRates(); // на всякий случай обновим сведения о рыночном окружении// блок закрытия покупокif (type==OP_BUY)
{
res = OrderClose(ticket,lots,Bid,Slippage,Orange);
if (!res)
{
Print("Не удалось закрыть ордер в покупку #",ticket,"! Ошибка №",GetLastError());
// дальнейшая обработка ошибки, написать самостоятельно
}
}
// блок закрытия продажif (type==OP_SELL)
{
res = OrderClose(ticket,lots,Ask,Slippage,Orange);
if (!res)
{
Print("Не удалось закрыть ордер в продажу #",ticket,"! Ошибка №",GetLastError());
// дальнейшая обработка ошибки, написать самостоятельно
}
}
}
//----return;
}
现在测试时没有开出一笔交易,在日志中写道Open_BuyS_SellS EURUSD,Daily: OrderSend error 131
错误131是体积不正确。比如说1手,你可能不被允许以0.01手开盘。
错误131是体积不正确。比如说1手,你可能不被允许以0.01手开盘。
下午。现在写Open_BuyS_SellS EURUSD,H4: OrderSend错误3
日子过得不错。现在它说Open_BuyS_SellS EURUSD,H4: OrderSend error 3
请参阅帮助中的OrderSend参数和错误代码
3 - 错误的参数。
你漏掉了一个,你写的是color arrow_color,而不是datetime expiration。
请参阅帮助中的OrderSend参数和错误代码
3 - 错误的参数。
你漏掉了一个,你写的是color arrow_color,而不是datetime expiration。
帮助谁知道!!!!
我有一个问题,我不知道如何解决,我试着解释一下。
因此,在我发布的代码中,有两个函数
在 void PrepareTicketsToClose(int signal, bool Revers, int & ticketsClose[][2], double & lots[],double arrayTickets[][9])中,我们必须放一个条件,决定我们是否应该离开或关闭订单。
我试着设置条件,但没有任何效果....
谁能看一下,看看这些函数中是否有错误,或者我弄错了....。
如何通过WIFI在ADSL调制解调器上为MT4打开端口? 我在6个DT上上网。型号tp-link W8901G读到你可以为torents打开端口,谁能面对?
如何通过WIFI在ADSL调制解调器上为MT4打开端口? 我在6个DT上上网。型号tp-link W8901G读到你可以为torents打开端口,谁能面对?
见http://megatorrents.org/forum/viewtopic.php?t=262709