Ошибка 10013 - страница 2

 
Антон:

Функция открытия ордера.


 


добавьте инициалоизацию ={0}

или

ZeroMemory ( request );
ZeroMemory ( result);
bool buy(double lots, int stopLoss, int takeProfit, string orderComment)
      {
         MqlTradeRequest request={0};
         MqlTradeResult result={0};
       
ZeroMemory ( request );
ZeroMemory ( result);



         request.action       = TRADE_ACTION_DEAL;
         request.magic        = magic;
         request.symbol       = sy.name;
         request.volume       = lots;
         request.price        = sy.ask;
         request.sl           = stopLoss>0 ? request.price-stopLoss*sy.point : 0;
         request.tp           = takeProfit>0 ? request.price+stopLoss*sy.point+sy.spread : 0;
         request.deviation    = slippage;
         request.type         = ORDER_TYPE_BUY;
         request.type_filling = ORDER_FILLING_IOC;
         request.type_time    = ORDER_TIME_GTC;
         request.comment      = orderComment;
         request.stoplimit    = 0;
        
         if(needFix) fix(request);
        
         bool success = OrderSend(request, result);
        
         commentRequest(request);
         commentResult(result);
        
         return success;
      }




а лучше рекомендация от Владимира Картпутова

>>>  рекомендую, используйте стандартную библиотеку - торговый клас CTrade
 
Yuriy Zaytsev:

...
а лучше рекомендация от Владимира Картпутова

>>>  рекомендую, используйте стандартную библиотеку - торговый клас CTrade
Юрий, далеко не все такие как карпутов. Некоторые хотят изучить язык программирования, а не язык в языке программирования. Одного мало, теперь двое агитируют за СБ.
 

Судя по всему, в данном случае использование СБ все же является оптимальным вариантом.

Ибо разработчики что-то не понятное намудрили.

Какая такая логика заставила их запретить заполнение части структуры запроса одному богу ведомо.

Есть структура, указан тип запроса, все - берите только те данные что нужно, каким образом могут помешать "типа" лишние данные не понятно...

Жаль только что подобных проблем в mql5 вагон и маленькая тележка, работа с ордерами так вообще жесть, да и графические объекты не лучше, такое ощущение что вывалили лишь бы что-то вывалить.

В 4 версии работа с ордерами была ужасна, но в 5 ОЧЕНЬ постарались что бы сделать еще в разы хуже. Та же байда с данными графика (Аск, Бид, Close[] И т.д.) Самые важные данные которые только есть в терминале, которые должны быть вообще всегда под рукой, они запихнули так что их хрен вытащишь... Пиши свои классы адаптеры... Ну хоть классы сделали - единственное улучшение.

 
Alexey Viktorov:
Юрий, далеко не все такие как карпутов. Некоторые хотят изучить язык программирования, а не язык в языке программирования. Одного мало, теперь двое агитируют за СБ.
Так можно дойти до ассемблера, а потом еще глубже, до микрокода контроллера , процессора. Зачем внедрять в код атомарные решения?
Сейчас ценится скорость разработок,  кроссплатформенность ,  а это опирается сильно на  готовые наработанные решения и  на возможности ООП.
Уже сейчас можно писать советник, который одинаково будет работать и на MT5 и на MT4, при этом в коде у вас не будет практически вообще различий,  они все будут упрятаны в ООП.
 
Антон:

разбирайтесь с параметром  request.type_filling = ORDER_FILLING_IOC;

Все перепробовал, ничего не помогает. 

 

Что-то совсем не понятное.

Весь день бился над открытием ордеров ничего не работало.

Сейчас  советник просто стоял на графике я его не трогал, не дорабатывал.

Вдруг все само собой стало работать, так как и должно было работать с самого начала... 

Весь день бился... Хе хе, вот пройдет неделя а потом месяц, посмотрим как запрете. Весь день...
 
Весь день бился... Хе хе, вот пройдет неделя а потом месяц, посмотрим как запрете. Весь день...
Достаточно изучить предложенные  классы, или самому разработать.

CTrade trade; // все предельно просто
...
trade.Buy(lLots, sSymbol ,pAsk, lSL, lTP, Comment );
..
и забыть по какие то  ORDER_FILLING_IOC  и прочие  глупости не нужные ,  зачем детализироваться в глубинные процессы.
и не не надо стучать ,целый день или неделю , лысиной по паркету   :-)
 
Антон:

Судя по всему, в данном случае использование СБ все же является оптимальным вариантом.

Ибо разработчики что-то не понятное намудрили.

Какая такая логика заставила их запретить заполнение части структуры запроса одному богу ведомо.

Есть структура, указан тип запроса, все - берите только те данные что нужно, каким образом могут помешать "типа" лишние данные не понятно...

Жаль только что подобных проблем в mql5 вагон и маленькая тележка, работа с ордерами так вообще жесть, да и графические объекты не лучше, такое ощущение что вывалили лишь бы что-то вывалить.

В 4 версии работа с ордерами была ужасна, но в 5 ОЧЕНЬ постарались что бы сделать еще в разы хуже. Та же байда с данными графика (Аск, Бид, Close[] И т.д.) Самые важные данные которые только есть в терминале, которые должны быть вообще всегда под рукой, они запихнули так что их хрен вытащишь... Пиши свои классы адаптеры... Ну хоть классы сделали - единственное улучшение.

Это всё от полного непонимания программирования. Я думал меньше меня никто не понимает... Антон, ну хоть о перегрузках функций почитай, тогда поймёшь почему лишние поля структуры заполнять нельзя. Именно по количеству, типам заполненных полей происходит вызов той или иной одноимённой функции. Если я не правильно выразился меня поправят программисты с образованием, но суть не изменится.

Конечно можно построить программу из кубиков лего, как чебурашка с барабашкой, но это не программирование. Хотя если цель не научиться, а просто лепить что получится, тогда -да. Тогда Юрий прав не надо ничего знать, ведь состряпали ... как он называется-то, мастер mql5, так кажется. Там вообще не надо знать ничего из лексикона программистов.
 
Alexey Viktorov:
Юрий, далеко не все такие как карпутов. Некоторые хотят изучить язык программирования, а не язык в языке программирования. Одного мало, теперь двое агитируют за СБ.
Так кто мешает? Раз не получается сделать с АПИ, посмотрите, как открывается позиция в СБ. Это займет 2 минуты и не надо писать на форум и ждать помощи ))
 
Alexey Viktorov:
Это всё от полного непонимания программирования. Я думал меньше меня никто не понимает... Антон, ну хоть о перегрузках функций почитай, тогда поймёшь почему лишние поля структуры заполнять нельзя. Именно по количеству, типам заполненных полей происходит вызов той или иной одноимённой функции. Если я не правильно выразился меня поправят программисты с образованием, но суть не изменится.

Конечно можно построить программу из кубиков лего, как чебурашка с барабашкой, но это не программирование. Хотя если цель не научиться, а просто лепить что получится, тогда -да. Тогда Юрий прав не надо ничего знать, ведь состряпали ... как он называется-то, мастер mql5, так кажется. Там вообще не надо знать ничего из лексикона программистов.
Советую посмотреть код, который генерят эти мастера. Пойдет только для курсовой работы на 1-2 курсе. ИМХО, нормальные люди это не используют.
 
Alexey Viktorov:
Это всё от полного непонимания программирования. Я думал меньше меня никто не понимает... Антон, ну хоть о перегрузках функций почитай, тогда поймёшь почему лишние поля структуры заполнять нельзя. Именно по количеству, типам заполненных полей происходит вызов той или иной одноимённой функции. Если я не правильно выразился меня поправят программисты с образованием, но суть не изменится.

Конечно можно построить программу из кубиков лего, как чебурашка с барабашкой, но это не программирование. Хотя если цель не научиться, а просто лепить что получится, тогда -да. Тогда Юрий прав не надо ничего знать, ведь состряпали ... как он называется-то, мастер mql5, так кажется. Там вообще не надо знать ничего из лексикона программистов.

Скорее от понимания как оно бывает по другому.

Поработайте с другими языками, с нормальными IDE. Почувствуйте разницу. 

Перегрузка функций?

Как оно относится к полям структуры? Структура - то  передается того же типа.  

Причина обращения: