//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- bool CheckOrders() // Есть массив с базовыми ордерами, открытыми по рынку InfoOrderNew[0][200] { // Есть массив с лок ордерами, выставленными к базовым InfoOrderNew[1][200] int TypeOrder; string Type = "", OrderComm = ""; bool OpenLockOrder = false; // Флаг на установку лок ордера
for(int i=OrdersTotal()-1;i>=0;i--) // Выполняем перебор по рыночн. и отлож. ордерам { if((OrderSelect(i,SELECT_BY_POS) == true) // Если есть следующ. && (OrderSymbol() == Symbol())) // .. и наша вал.пара { OrderComm = OrderComment(); // Выбираем соответствующий комментарий ордера TypeOrder = OrderType(); // Выбираем соответствующий тип ордера for(int n=0; n<=199; n++) // Выполняем прогон по массиву ордеров { if(StringFind(OrderComm,"BaseIndex #"+IntegerToString(n)+"_",0)>=0) // Ищем базовый ордер с индексом в комментарии, соответствующем номеру ячейки в массиве ордеров { if((TypeOrder == InfoOrderNew[0][n].TypeOrder) == OP_BUY) // Если находим и наш ордер в массиве является BUY { if(InfoOrderNew[1][n].TypeOrder == 1 || InfoOrderNew[1][n].TypeOrder == 5) // Проверяем, выставлен ли к нему лок ордер (SELL или SELLSTOP) в массиве лок ордеров { if(InfoOrderNew[1][n].TypeOrder == 1) Type = "Sell"; if(InfoOrderNew[1][n].TypeOrder == 5) Type = "SellStop"; if(Debug) Print("Функция CheckOrders(): К ордеру Buy #",InfoOrderNew[0][n].TicketOrder," найден Lock-ордер ",Type," #",InfoOrderNew[1][n].TicketOrder,"."); break; // Если лок выставлен, то выходим из функции } else// Если нет, то { if(Debug) Print("Функция CheckOrders(): К ордеру Buy #",InfoOrderNew[0][n].TicketOrder," не найден Lock-ордер. Необходимо его установить!"); OpenLockOrder = true; // Даем сигнал на установку лока } } if((TypeOrder == InfoOrderNew[0][n].TypeOrder) == OP_SELL) // Если наш ордер в массиве является SELL { if(InfoOrderNew[1][n].TypeOrder == 0 || InfoOrderNew[1][n].TypeOrder == 4) // Проверяем, выставлен ли к нему лок ордер (BUY или BUYSTOP) в массиве лок ордеров { if(InfoOrderNew[1][n].TypeOrder == 0) Type = "Buy"; if(InfoOrderNew[1][n].TypeOrder == 4) Type = "BuyStop"; if(Debug) Print("Функция CheckOrders(): К ордеру Sell #",InfoOrderNew[0][n].TicketOrder," найден Lock-ордер ",Type," #",InfoOrderNew[1][n].TicketOrder,"."); break; // Если лок выставлен, то выходим из функции } else// Если нет, то { if(Debug) Print("Функция CheckOrders(): К ордеру Sell #",InfoOrderNew[0][n].TicketOrder," не найден Lock-ордер. Необходимо его установить!"); OpenLockOrder = true; // Даем сигнал на установку лока } } } } } } return(OpenLockOrder); // Передаем нашей функции полученное значение }
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- bool CheckOrders() // Есть массив с базовыми ордерами, открытыми по рынку InfoOrderNew[0][200] { // Есть массив с лок ордерами, выставленными к базовым InfoOrderNew[1][200] int TypeOrder; string Type = "", OrderComm = ""; bool OpenLockOrder = false; // Флаг на установку лок ордера
for(int i=OrdersTotal()-1;i>=0;i--) // Выполняем перебор по рыночн. и отлож. ордерам { if((OrderSelect(i,SELECT_BY_POS) == true) // Если есть следующ. && (OrderSymbol() == Symbol())) // .. и наша вал.пара { OrderComm = OrderComment(); // Выбираем соответствующий комментарий ордера TypeOrder = OrderType(); // Выбираем соответствующий тип ордера for(int n=0; n<=199; n++) // Выполняем прогон по массиву ордеров { if(StringFind(OrderComm,"BaseIndex #"+IntegerToString(n)+"_",0)>=0) // Ищем базовый ордер с индексом в комментарии, соответствующем номеру ячейки в массиве ордеров { if((TypeOrder == InfoOrderNew[0][n].TypeOrder) == OP_BUY) // Если находим и наш ордер в массиве является BUY { if(InfoOrderNew[1][n].TypeOrder == 1 || InfoOrderNew[1][n].TypeOrder == 5) // Проверяем, выставлен ли к нему лок ордер (SELL или SELLSTOP) в массиве лок ордеров { if(InfoOrderNew[1][n].TypeOrder == 1) Type = "Sell"; if(InfoOrderNew[1][n].TypeOrder == 5) Type = "SellStop"; if(Debug) Print("Функция CheckOrders(): К ордеру Buy #",InfoOrderNew[0][n].TicketOrder," найден Lock-ордер ",Type," #",InfoOrderNew[1][n].TicketOrder,"."); break; // Если лок выставлен, то выходим из функции } else// Если нет, то { if(Debug) Print("Функция CheckOrders(): К ордеру Buy #",InfoOrderNew[0][n].TicketOrder," не найден Lock-ордер. Необходимо его установить!"); OpenLockOrder = true; // Даем сигнал на установку лока } } if((TypeOrder == InfoOrderNew[0][n].TypeOrder) == OP_SELL) // Если наш ордер в массиве является SELL { if(InfoOrderNew[1][n].TypeOrder == 0 || InfoOrderNew[1][n].TypeOrder == 4) // Проверяем, выставлен ли к нему лок ордер (BUY или BUYSTOP) в массиве лок ордеров { if(InfoOrderNew[1][n].TypeOrder == 0) Type = "Buy"; if(InfoOrderNew[1][n].TypeOrder == 4) Type = "BuyStop"; if(Debug) Print("Функция CheckOrders(): К ордеру Sell #",InfoOrderNew[0][n].TicketOrder," найден Lock-ордер ",Type," #",InfoOrderNew[1][n].TicketOrder,"."); break; // Если лок выставлен, то выходим из функции } else// Если нет, то { if(Debug) Print("Функция CheckOrders(): К ордеру Sell #",InfoOrderNew[0][n].TicketOrder," не найден Lock-ордер. Необходимо его установить!"); OpenLockOrder = true; // Даем сигнал на установку лока } } } } } } return(OpenLockOrder); // Передаем нашей функции полученное значение }
2017.01.1518:23:51.0622017.01.0304:15:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Функция SendMarketOrder(): Торговля разрешена, отправляем ордер... 2017.01.1518:23:51.0622017.01.0304:15:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: open #1 buy 0.10 GBPUSD at 1.23020 ok 2017.01.1518:23:51.0622017.01.0304:15:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Функция SendMarketOrder(): Ордер отправлен успешно! Характеристики ордера: Buy#1; Цена открытия: 0.0; Лот: 0.1; Стоплосс: 0.0; Тейкпрофит: 0.0. 2017.01.1518:23:51.0622017.01.0304:15:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: В работе функция ModifyOrder() 2017.01.1518:23:51.0622017.01.0304:15:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Функция ModifyOrder() 2017.01.1518:23:51.0622017.01.0304:15:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Функция ModifyOrder(): Торговый поток свободен! 2017.01.1518:23:51.0622017.01.0304:15:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: modify #1 buy 0.10 GBPUSD at 1.23020 sl: 1.18020 tp: 1.23520 ok 2017.01.1518:23:51.0622017.01.0304:15:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Функция ModifyOrder(): Модификация ордера выполнена успешно! 2017.01.1518:23:51.0622017.01.0304:15:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: В работе функция SetPendingOrder() 2017.01.1518:23:51.0622017.01.0304:15:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Функция SetPendingOrder(): Выставленная цена SellStop ордера удовлетворяет условиям брокера. 2017.01.1518:23:51.0622017.01.0304:15:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: open #2 sell stop 0.10 GBPUSD at 1.22020 ok 2017.01.1518:23:51.0622017.01.0304:15:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Функция SetPendingOrder(): Отложенный ордер выставлен c 1-й попытки! Характеристики ордера: SellStop #2; Цена: 1.2202; Лот: 0.1. 2017.01.1518:23:51.0622017.01.0304:15:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Отложенный SellStop ордер успешно установлен! 2017.01.1518:23:51.1092017.01.0304:30:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Проверка заполнения массива Lock-ордерами. Ордер Тикет #2; Цена=1.2202; Тип=5; ячейка[0]. 2017.01.1518:23:51.1092017.01.0304:30:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Проверка заполнения массива обычными ордерами. Ордер Тикет #1; Цена=1.2302; Тип=0; ячейка[0]. 2017.01.1518:23:51.1092017.01.0304:30:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Функция OpenOrders(): Общее количество найденных ордеров = 2. 2017.01.1518:23:51.1092017.01.0304:30:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Функция OpenOrders(): Общее количество рыночных ордеров = 1. 2017.01.1518:23:51.1092017.01.0304:30:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Функция OpenOrders(): Общее количество Lock-ордеров = 1. 2017.01.1518:23:51.1092017.01.0304:30:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Функция CheckOrders(): К ордеру Sell #1 не найден Lock-ордер. Необходимо его установить!
2017.01.1523:09:48.2342017.01.0309:30:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Проверка заполнения массива Lock-ордерами. Ордер Тикет #4; Цена=1.2387; Тип ордера=BuyStop; ячейка[1]. 2017.01.1523:09:48.2342017.01.0309:30:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Проверка заполнения массива обычными ордерами. Ордер Тикет #3; Цена=1.2287; Тип ордера=Sell; ячейка[1]. 2017.01.1523:09:48.2342017.01.0309:30:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Проверка заполнения массива Lock-ордерами. Ордер Тикет #2; Цена=1.2202; Тип ордера=SellStop; ячейка[0]. 2017.01.1523:09:48.2342017.01.0309:30:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Проверка заполнения массива обычными ордерами. Ордер Тикет #1; Цена=1.2302; Тип ордера=Buy; ячейка[0]. 2017.01.1523:09:48.2342017.01.0309:30:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Функция OpenOrders(): Общее количество найденных ордеров = 4. 2017.01.1523:09:48.2342017.01.0309:30:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Функция OpenOrders(): Общее количество рыночных ордеров = 2. 2017.01.1523:09:48.2342017.01.0309:30:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Функция OpenOrders(): Общее количество Lock-ордеров = 2. 2017.01.1523:09:48.2342017.01.0309:30:00Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Функция CheckOrders(): К ордеру Sell #3 найден Lock-ордер BuyStop #4. 2017.01.1523:09:48.2342017.01.0309:30:00Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Функция CheckOrders(): К ордеру Sell #1 не найден Lock-ордер. Необходимо его установить!
経験豊富なプログラマーに助けてもらいたい
皆さん、こんにちは。
みんな、力を貸してくれ!Expert Advisorを1つ書いています。特にプログラミングが得意なわけでもないので、お願いしています。成行注文のロックを設定するためのチェック機能を作っています。すべての注文は構造化された2次元配列で書かれている。配列の最初のインデックス(セル)[0]は基本(市場)注文、2番目のインデックス(セル)[1]は基本注文に対するロックです。そこで、この関数は、基本注文にロックが設定されているかどうかをチェックし、YESの場合は何もせずに作業を継続するようにします。関数を書いたのですが、なんだか動作がおかしくなってしまいました。例えば、成行買い注文を出したところ、端末が「これは買い注文ではなく、売り注文 であるため、ロックをかけるべきである」というメッセージを出した場合。しかし、SELL注文ではすべて正常に動作しています。何も理解できない。注文は正しく配列に書き込まれます。適切なチェックを行い、すべて完璧です。すべての保証基準が配列に正しく表示されます。コードのエラーを見つけるか、私の関数を修正するのを手伝ってください。関数を添付します。
bool CheckOrders() // Есть массив с базовыми ордерами, открытыми по рынку InfoOrderNew[0][200]
{ // Есть массив с лок ордерами, выставленными к базовым InfoOrderNew[1][200]
int TypeOrder;
string Type = "",
OrderComm = "";
bool OpenLockOrder = false; // Флаг на установку лок ордера
for(int i=OrdersTotal()-1;i>=0;i--) // Выполняем перебор по рыночн. и отлож. ордерам
{
if((OrderSelect(i,SELECT_BY_POS) == true) // Если есть следующ.
&& (OrderSymbol() == Symbol())) // .. и наша вал.пара
{
OrderComm = OrderComment(); // Выбираем соответствующий комментарий ордера
TypeOrder = OrderType(); // Выбираем соответствующий тип ордера
for(int n=0; n<=199; n++) // Выполняем прогон по массиву ордеров
{
if(StringFind(OrderComm,"BaseIndex #"+IntegerToString(n)+"_",0)>=0) // Ищем базовый ордер с индексом в комментарии, соответствующем номеру ячейки в массиве ордеров
{
if((TypeOrder == InfoOrderNew[0][n].TypeOrder) == OP_BUY) // Если находим и наш ордер в массиве является BUY
{
if(InfoOrderNew[1][n].TypeOrder == 1 || InfoOrderNew[1][n].TypeOrder == 5) // Проверяем, выставлен ли к нему лок ордер (SELL или SELLSTOP) в массиве лок ордеров
{
if(InfoOrderNew[1][n].TypeOrder == 1) Type = "Sell";
if(InfoOrderNew[1][n].TypeOrder == 5) Type = "SellStop";
if(Debug) Print("Функция CheckOrders(): К ордеру Buy #",InfoOrderNew[0][n].TicketOrder," найден Lock-ордер ",Type," #",InfoOrderNew[1][n].TicketOrder,".");
break; // Если лок выставлен, то выходим из функции
}
else // Если нет, то
{
if(Debug) Print("Функция CheckOrders(): К ордеру Buy #",InfoOrderNew[0][n].TicketOrder," не найден Lock-ордер. Необходимо его установить!");
OpenLockOrder = true; // Даем сигнал на установку лока
}
}
if((TypeOrder == InfoOrderNew[0][n].TypeOrder) == OP_SELL) // Если наш ордер в массиве является SELL
{
if(InfoOrderNew[1][n].TypeOrder == 0 || InfoOrderNew[1][n].TypeOrder == 4) // Проверяем, выставлен ли к нему лок ордер (BUY или BUYSTOP) в массиве лок ордеров
{
if(InfoOrderNew[1][n].TypeOrder == 0) Type = "Buy";
if(InfoOrderNew[1][n].TypeOrder == 4) Type = "BuyStop";
if(Debug) Print("Функция CheckOrders(): К ордеру Sell #",InfoOrderNew[0][n].TicketOrder," найден Lock-ордер ",Type," #",InfoOrderNew[1][n].TicketOrder,".");
break; // Если лок выставлен, то выходим из функции
}
else // Если нет, то
{
if(Debug) Print("Функция CheckOrders(): К ордеру Sell #",InfoOrderNew[0][n].TicketOrder," не найден Lock-ордер. Необходимо его установить!");
OpenLockOrder = true; // Даем сигнал на установку лока
}
}
}
}
}
}
return(OpenLockOrder); // Передаем нашей функции полученное значение
}
経験豊富なプログラマーに助けてもらいたい
みなさん、こんにちは。
みんな、力を貸してくれ!Expert Advisorを1つ書いています。特にプログラミングが得意なわけでもないので、お願いしています。成行注文のロックを設定するためのチェック機能を作っています。すべての注文は構造化された2次元配列で書かれている。配列の最初のインデックス(セル)[0]は基本(市場)注文、2番目のインデックス(セル)[1]は基本注文に対するロックです。そこで、この関数は、基本注文にロックが設定されているかどうかをチェックし、YESの場合は何もせずに作業を継続するようにします。関数を書いたのですが、なんだか動作がおかしくなってしまいました。例えば、成行買い注文を出したところ、端末が「これは買い注文ではなく、売り注文 であるため、ロックをかけるべきである」というメッセージを出した場合。しかし、SELL注文ではすべて正常に動作しています。何も理解できない。注文は正しく配列に書き込まれます。適切なチェックを行い、すべて完璧です。すべての保証基準が配列に正しく表示されます。コードのエラーを見つけるか、私の関数を修正するのを手伝ってください。関数を添付します。
bool CheckOrders() // Есть массив с базовыми ордерами, открытыми по рынку InfoOrderNew[0][200]
{ // Есть массив с лок ордерами, выставленными к базовым InfoOrderNew[1][200]
int TypeOrder;
string Type = "",
OrderComm = "";
bool OpenLockOrder = false; // Флаг на установку лок ордера
for(int i=OrdersTotal()-1;i>=0;i--) // Выполняем перебор по рыночн. и отлож. ордерам
{
if((OrderSelect(i,SELECT_BY_POS) == true) // Если есть следующ.
&& (OrderSymbol() == Symbol())) // .. и наша вал.пара
{
OrderComm = OrderComment(); // Выбираем соответствующий комментарий ордера
TypeOrder = OrderType(); // Выбираем соответствующий тип ордера
for(int n=0; n<=199; n++) // Выполняем прогон по массиву ордеров
{
if(StringFind(OrderComm,"BaseIndex #"+IntegerToString(n)+"_",0)>=0) // Ищем базовый ордер с индексом в комментарии, соответствующем номеру ячейки в массиве ордеров
{
if((TypeOrder == InfoOrderNew[0][n].TypeOrder) == OP_BUY) // Если находим и наш ордер в массиве является BUY
{
if(InfoOrderNew[1][n].TypeOrder == 1 || InfoOrderNew[1][n].TypeOrder == 5) // Проверяем, выставлен ли к нему лок ордер (SELL или SELLSTOP) в массиве лок ордеров
{
if(InfoOrderNew[1][n].TypeOrder == 1) Type = "Sell";
if(InfoOrderNew[1][n].TypeOrder == 5) Type = "SellStop";
if(Debug) Print("Функция CheckOrders(): К ордеру Buy #",InfoOrderNew[0][n].TicketOrder," найден Lock-ордер ",Type," #",InfoOrderNew[1][n].TicketOrder,".");
break; // Если лок выставлен, то выходим из функции
}
else // Если нет, то
{
if(Debug) Print("Функция CheckOrders(): К ордеру Buy #",InfoOrderNew[0][n].TicketOrder," не найден Lock-ордер. Необходимо его установить!");
OpenLockOrder = true; // Даем сигнал на установку лока
}
}
if((TypeOrder == InfoOrderNew[0][n].TypeOrder) == OP_SELL) // Если наш ордер в массиве является SELL
{
if(InfoOrderNew[1][n].TypeOrder == 0 || InfoOrderNew[1][n].TypeOrder == 4) // Проверяем, выставлен ли к нему лок ордер (BUY или BUYSTOP) в массиве лок ордеров
{
if(InfoOrderNew[1][n].TypeOrder == 0) Type = "Buy";
if(InfoOrderNew[1][n].TypeOrder == 4) Type = "BuyStop";
if(Debug) Print("Функция CheckOrders(): К ордеру Sell #",InfoOrderNew[0][n].TicketOrder," найден Lock-ордер ",Type," #",InfoOrderNew[1][n].TicketOrder,".");
break; // Если лок выставлен, то выходим из функции
}
else // Если нет, то
{
if(Debug) Print("Функция CheckOrders(): К ордеру Sell #",InfoOrderNew[0][n].TicketOrder," не найден Lock-ордер. Необходимо его установить!");
OpenLockOrder = true; // Даем сигнал на установку лока
}
}
}
}
}
}
return(OpenLockOrder); // Передаем нашей функции полученное значение
}
もしくはアンダーセラーのログを見せてください。
もしくは、未練たらたらのログを見せる。
しました。何も変わっていない。以下は、イベントログのエントリです。
2017.01.15 18:23:51.062 2017.01.03 04:15:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: open #1 buy 0.10 GBPUSD at 1.23020 ok
2017.01.15 18:23:51.062 2017.01.03 04:15:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Функция SendMarketOrder(): Ордер отправлен успешно! Характеристики ордера: Buy#1; Цена открытия: 0.0; Лот: 0.1; Стоплосс: 0.0; Тейкпрофит: 0.0.
2017.01.15 18:23:51.062 2017.01.03 04:15:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: В работе функция ModifyOrder()
2017.01.15 18:23:51.062 2017.01.03 04:15:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Функция ModifyOrder()
2017.01.15 18:23:51.062 2017.01.03 04:15:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Функция ModifyOrder(): Торговый поток свободен!
2017.01.15 18:23:51.062 2017.01.03 04:15:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: modify #1 buy 0.10 GBPUSD at 1.23020 sl: 1.18020 tp: 1.23520 ok
2017.01.15 18:23:51.062 2017.01.03 04:15:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Функция ModifyOrder(): Модификация ордера выполнена успешно!
2017.01.15 18:23:51.062 2017.01.03 04:15:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: В работе функция SetPendingOrder()
2017.01.15 18:23:51.062 2017.01.03 04:15:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Функция SetPendingOrder(): Выставленная цена SellStop ордера удовлетворяет условиям брокера.
2017.01.15 18:23:51.062 2017.01.03 04:15:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: open #2 sell stop 0.10 GBPUSD at 1.22020 ok
2017.01.15 18:23:51.062 2017.01.03 04:15:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Функция SetPendingOrder(): Отложенный ордер выставлен c 1-й попытки! Характеристики ордера: SellStop #2; Цена: 1.2202; Лот: 0.1.
2017.01.15 18:23:51.062 2017.01.03 04:15:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Отложенный SellStop ордер успешно установлен!
2017.01.15 18:23:51.109 2017.01.03 04:30:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Проверка заполнения массива Lock-ордерами. Ордер Тикет #2; Цена=1.2202; Тип=5; ячейка[0].
2017.01.15 18:23:51.109 2017.01.03 04:30:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Проверка заполнения массива обычными ордерами. Ордер Тикет #1; Цена=1.2302; Тип=0; ячейка[0].
2017.01.15 18:23:51.109 2017.01.03 04:30:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Функция OpenOrders(): Общее количество найденных ордеров = 2.
2017.01.15 18:23:51.109 2017.01.03 04:30:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Функция OpenOrders(): Общее количество рыночных ордеров = 1.
2017.01.15 18:23:51.109 2017.01.03 04:30:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Функция OpenOrders(): Общее количество Lock-ордеров = 1.
2017.01.15 18:23:51.109 2017.01.03 04:30:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Функция CheckOrders(): К ордеру Sell #1 не найден Lock-ордер. Необходимо его установить!
関数内で、YOUがInfoOrderNew[1][n].TypeOrderの 配列を埋めて いる箇所をご覧ください。
2017.01.15 23:09:48.234 2017.01.03 09:30:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Проверка заполнения массива обычными ордерами. Ордер Тикет #3; Цена=1.2287; Тип ордера=Sell; ячейка[1].
2017.01.15 23:09:48.234 2017.01.03 09:30:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Проверка заполнения массива Lock-ордерами. Ордер Тикет #2; Цена=1.2202; Тип ордера=SellStop; ячейка[0].
2017.01.15 23:09:48.234 2017.01.03 09:30:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Проверка заполнения массива обычными ордерами. Ордер Тикет #1; Цена=1.2302; Тип ордера=Buy; ячейка[0].
2017.01.15 23:09:48.234 2017.01.03 09:30:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Функция OpenOrders(): Общее количество найденных ордеров = 4.
2017.01.15 23:09:48.234 2017.01.03 09:30:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Функция OpenOrders(): Общее количество рыночных ордеров = 2.
2017.01.15 23:09:48.234 2017.01.03 09:30:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Функция OpenOrders(): Общее количество Lock-ордеров = 2.
2017.01.15 23:09:48.234 2017.01.03 09:30:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Функция CheckOrders(): К ордеру Sell #3 найден Lock-ордер BuyStop #4.
2017.01.15 23:09:48.234 2017.01.03 09:30:00 Multi-Trade System ver.1.03 (SergeyOm) GBPUSD,M15: Функция CheckOrders(): К ордеру Sell #1 не найден Lock-ордер. Необходимо его установить!
Vladislav Andruschenko さん、問題の発見にご協力いただき、ありがとうございました。解決したようです。コードを少し作り直したら、すべてが一度に動くようになりました。
かまいません
週末に落ちちゃったんです。:-)整理するのはいいことだ。
かまいません
週末に落ちちゃったんです。:-)整理するのはいいことだ。
もうひとつ、疑問が湧いてきました。
構造化されたヘテロジニアスアレイの任意のセルの情報をゼロにしたり削除したりする方法は?注文のコメントが 変更されたので、構造化配列のセルからこの注文を削除し、別の配列にこの注文を定義する必要があることです。普通の配列ならすべてだいたいわかるのですが、演算子や関数がどう動くのか、どう処理すればいいのか、よくわかりません。また、ある構造化配列を別の配列にコピーして、前の充填に関する情報を保存し、新しいものと比較するにはどうすればよいでしょうか。このテーマについて知っている人にアドバイスをお願いします。ぜひともよろしくお願いします。
価格タグ(OBJ_ARROW_LEFT_PRICE)に、価格の代わりに独自のテキストを持たせることはできますか?もし可能なら、どのようにすればよいですか?