int start () { int err; //--- err=OrderSend ("USDCHF", OP_BUY, 0.1, Ask, 3, NULL, NULL, NULL, 2308, 0, Green); if (err! =0) { err=GetLastError (); Print ("Error", err); } return (0); }
Если посмотреть внимательнее, я пытаюсь в окне GBPUSD открыть ордер USDCHF. И вот как раз это и не получается...
Вы пытаетесь открыть франк по цене фунта. Вопросы детские. Непонятно как такой код может работать у любого брокера. Почитайте учебник что-ли.
ЗЫ 1.0/MarketInfo (SubSymbol, MODE_ASK)
OrderSend выдает на выходе номер тикета или -1 и никогда 0.
Замените
на
Заменил, только там скобку добавил
if (Ask2!=0) ValutWeight=NormalizeDouble (Lot1*(Ask/Ask2), 2);В результате Comment выводит 00. Ожидаемый резульат, вот только почему он на Alpari и Fxopen нормально считает, а на Roboforex - Ask2=0 ...
Вы пытаетесь открыть франк по цене фунта. Вопросы детские. Непонятно как такой код может работать у любого брокера. Почитайте учебник что-ли.
ЗЫ 1.0/MarketInfo (SubSymbol, MODE_ASK)
Огромное человеческое спасибо. Нашел, исправил. Теперь на Альпари работает!!! Сам удивился, что на Fxopen оно и до этого работало, это вообще нелогично, там разница между курсами более 300 пунктов! Как оно получалось - до сих пор не знаю, ну да ладно...
1.0/MarketInfo (SubSymbol, MODE_ASK) : единицу хоть int, хоть double разделить на ноль - все равно та же ошибка вылезет. Вопрос только в том, почему MarketInfo (SubSymbol, MODE_ASK) возвращает "0" и именно на Робофорексе, на Альпари и Fxopen - норма...
koljanich:
Вопрос только в том, почему
MarketInfo (SubSymbol, MODE_ASK) возвращает "0"
потому.
что обычно дают подготовленный скрипт. и просят других запустить у себя и показать результаты.
1.0/MarketInfo (SubSymbol, MODE_ASK)
: единицу хоть int, хоть double разделить на ноль - все равно та же ошибка вылезет. Вопрос только в том, почему
MarketInfo (SubSymbol, MODE_ASK) возвращает "0" и именно на Робофорексе, на Альпари и Fxopen - норма...
Вот исходник, кторый показывает 0,0
//+------------------------------------------------------------------+ //| Test.mq4 | //| Copyright 2012, NNNN | //| | //+------------------------------------------------------------------+ #property copyright "Copyright 2012, NNNN" #property link "" extern string SubSymbol = "USDCHF"; extern double Lot1 =0.1; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- double Ask1,Ask2,Bid1,Bid2,ValutWeight; //---- Ask1=NormalizeDouble(Ask,Digits); Ask2=NormalizeDouble(MarketInfo(SubSymbol,MODE_ASK),Digits); Bid1=NormalizeDouble(Bid,Digits); Bid2=NormalizeDouble(MarketInfo(SubSymbol,MODE_BID),Digits); if (Ask2!=0) ValutWeight=NormalizeDouble (Lot1*(Ask/Ask2), 2); //ValutWeight=NormalizeDouble((1/MarketInfo(SubSymbol,MODE_ASK)*Lot1)/(1/Ask),2); Comment ("Ask2: ",Ask2,"\n","ValutWeight: ", ValutWeight); //---- return(0); } //+------------------------------------------------------------------+
Вот исходник, кторый показывает 0,0
Да не будет тестер работать на двух разных инструментах. Demo, Real - да. Ваш SubSymbol В тестере никак не пройдет.
Вот исходник, кторый показывает 0,0
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Platform: Meta Trader 4. Build 438 (21 Sep 2012)
Тема уже много раз обсуждалась, просмотрел посты:
https://www.mql5.com/ru/forum/127406/page2
https://www.mql5.com/ru/forum/133518
https://www.mql5.com/ru/forum/99891
https://www.mql5.com/ru/forum/114034
Там, в основном, либо неправильная цена, либо говорится, что в данном ДЦ пятизнак, а в сове предусмотрено 4 знака.
Возможно, так оно и есть, но в их случае. В моем же, вот код ошибки в ЧИСТОМ виде:
Выдает ошибку : " 2012.10.19 18:17:15 AutoTrader GBPUSD, M5: Error 129 ". Если посмотреть внимательнее, я пытаюсь в окне GBPUSD открыть ордер USDCHF. И вот как раз это и не получается...
Этот код прекрасно работает на FXOpen ECN Demo (5-ти знак), но не работает на Альпари. На мои письма в поддержку отвечают советниками не занимаемся - пиши на MQL. Вот и спашиваю - что в таком простом участке кода может быть не так?
И еще одна проблемка. Участок кода "Чистой ошибки" выделен из советника:
ДЦ Roboforex, демо ECN счет
Появляется ошибка: 2012.10.19 17:41:03 AutoTrader GBPUSD.e, M5: zero divide
Ошибка в строчке советника, когда пытается разделить 1/MarketInfo (SubSymbol, MODE_ASK). Почему-то функция возвращает 0. Вот и появляется ошибка. Но почему она возвращает 0 - не пойму.
string SubSymbol = "USDCHF" (все та же ситуация с открытием другого символа на текущем графике).
Спасибо за потраченное на чтение время. И за будущую помощь, заранее спасибо...