входит ли он в сделки, когда вы комментируете
//if(OpenOrdersThisPair(Symbol())==0)входит ли он, когда
LotSize = 0.1;
и т.д. проделайте обратный путь, пока он не начнет вводить сделки, как только это произойдет, вы, вероятно, поймете, в чем проблема. hth
Да, он входит в длинную сторону даже с размером лота "0"...
Изменение OpenOrderThisPair тоже не работает..... Хммм... Это очень странно...
Изменение OpenOrderThisPair тоже не работает..... Хммм... Это очень странно...
DomGilberto:
Да, он входит в длинную сторону даже с размером лота "0"...
Изменение OpenOrderThisPair тоже не работает..... Хммм... Это очень странно...
Да, он входит в длинную сторону даже с размером лота "0"...
Изменение OpenOrderThisPair тоже не работает..... Хммм... Это очень странно...
Если этот тест возвращает ненулевое значение . . .
if(OpenOrdersThisPair(Symbol()) == 0)
... OrderSend() не вызывается, но вы все равно проверяете, если SellTicketOrder больше 0. ...
Сделайте это...
if (direction==1)//--Sell--// { { double ssl=sell_stop_price; double stp=sell_takeprofit_price; LotSize = (RiskedAmount/(pips_to_ssl/pips))/10; if(OpenOrdersThisPair(Symbol())==0) { int SellTicketOrder = OrderSend(Symbol(),OP_SELLSTOP,LotSize,sellPrice,3,ssl,stp,NULL,MagicNumber,0,Red); if(SellTicketOrder > 0) { Print("Order Placed #", SellTicketOrder); } else { Print("Order Send Failed, error # ", GetLastError()); } } }
Нет - похоже, не хочет отправлять ордер на продажу...
Наверное, это ошибка в том, как я написал код относительно операторов "IF" в цикле for, который посылает функцию OrderEntry для запуска ордера...
Наверное, это ошибка в том, как я написал код относительно операторов "IF" в цикле for, который посылает функцию OrderEntry для запуска ордера...
DomGilberto:
Неа - похоже, не хочет отправлять ордер на продажу...
Наверное, это ошибка в том, как я написал код относительно операторов "IF" в цикле for, который посылает функцию OrderEntry для запуска ордера...
Так какую ошибку вы получаете сейчас? Если никакой, и вы не получаете "Order placed # 12345", тогда OrderSend() не вызывается и у вас проблема с вашей функцией OpenOrdersThisPair() ... опубликуйте ваш код.
Неа - похоже, не хочет отправлять ордер на продажу...
Наверное, это ошибка в том, как я написал код относительно операторов "IF" в цикле for, который посылает функцию OrderEntry для запуска ордера...
Когда эта функция работает, она прекрасно работает на длинной стороне (я только что играл с этим в течение последних 2 часов). Дело в том, что я, скорее всего, запутаю вас и еще кого-то, так как я знаю, где я ошибаюсь (там, где я вызываю функцию"CheckForMaTrade") в отношении операторов IF относительно параметров скользящей средней, и как, если они "истинны", это отправит OrderEntry в OrderSend... Проблема в том, что я все еще изучаю, как правильно написать эту часть...
//+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- if(OpenOrdersThisPair(Symbol())>=1) { if(UseMoveToBreakEven)MoveToBreakEven(); if(UseTrailingStop)AdjustTrail(); if(Use_MA_Trail)MA_Trail(); } if(IsNewCandle())CheckForMaTradeLong(); if(IsNewCandle())CheckForMaTradeShort(); //---- return(0); }
DomGilberto:
Когда эта функция работает, она прекрасно работает на длинной стороне (я только что играл с этим в течение последних 2 часов). Дело в том, что я, скорее всего, запутаю вас и еще кого-то, так как я знаю, где я ошибаюсь (там, где я вызываю функцию "CheckForMaTrade") в отношении операторов IF относительно параметров скользящей средней, и как, если они "истинны", это отправит OrderEntry в OrderSend... Проблема в том, что я все еще учусь правильно писать эту часть...
Когда эта функция работает, она прекрасно работает на длинной стороне (я только что играл с этим в течение последних 2 часов). Дело в том, что я, скорее всего, запутаю вас и еще кого-то, так как я знаю, где я ошибаюсь (там, где я вызываю функцию "CheckForMaTrade") в отношении операторов IF относительно параметров скользящей средней, и как, если они "истинны", это отправит OrderEntry в OrderSend... Проблема в том, что я все еще учусь правильно писать эту часть...
RaptorUK:
Так какую ошибку вы получаете сейчас? Если никакой, и вы не получаете "Order placed # 12345", тогда OrderSend() не вызывается, и у вас проблема с вашей функцией OpenOrdersThisPair() ... опубликуйте ваш код.
Так какую ошибку вы получаете сейчас? Если никакой, и вы не получаете "Order placed # 12345", тогда OrderSend() не вызывается, и у вас проблема с вашей функцией OpenOrdersThisPair() ... опубликуйте ваш код.
Итак ... . . какую ошибку вы получаете и т.д. ...
О, простите - я больше не получаю никаких ошибок. Я получаю только проходящие ордера на покупку и никаких ордеров на продажу...
Это связано с моей предыдущей темой о пересечении МА - я все еще не понимаю! Но я не хочу никого заводить и бить мертвую лошадь, в то время как люди дают мне ответ (хотя я не понимаю ответа lol)! Спасибо RaptorUK за вашу помощь!
Это связано с моей предыдущей темой о пересечении МА - я все еще не понимаю! Но я не хочу никого заводить и бить мертвую лошадь, в то время как люди дают мне ответ (хотя я не понимаю ответа lol)! Спасибо RaptorUK за вашу помощь!
if(IsNewCandle())CheckForMaTradeLong(); if(IsNewCandle())CheckForMaTradeShort();Хотя я поддерживаю факторизацию операций в функции, я не делаю этого для большинства вариаций New Candle/New Bar, потому что эта функция может быть вызвана только ОДИН раз [на start()].
int start(){ static datetime time0; bool isNewCandle = time0 != Time[0]; time0 = Time[0]; // Once per start only. : if(isNewCandle)CheckForMaTradeLong(); if(isNewCandle)CheckForMaTradeShort();
Спасибо WHRoeder - хороший совет!
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я пытаюсь понять, почему длинные позиции работают, а короткие сделки не работают вообще?
У меня есть ощущение, что это как-то связано с моей функцией init для определения количества десятичных знаков при данном брокере. (так как это, похоже, является виновником того, почему фантомные ордера выбрасываются в самом начале, когда я впервые инициирую тестер...)
У кого-нибудь есть идеи, почему короткая сторона говорит мне эту ошибку?
Заранее спасибо (код немного беспорядочен на данный момент, я намерен очистить его, конечно!)