Перейти к содержанию
Форекс Форум трейдеров Академии «MasterForex-V»
Внимание: для входа на форум используйте e-mail вместо ника, пароль остаётся прежним. Если вы забыли свой e-mail пишите в техподдержку ( MFadmin@bk.ru )

docspectre

Пользователи ST test (off)
  • Постов

    25
  • Зарегистрирован

  • Посещение

Достижения docspectre

записался

записался (3/5)

0

Репутация

  1. Похоже меня не так поняли. мне нужно не найти последнюю сделку, а написать так чтобы последняя сделка при соблюдении определенных условий открывалась лотом равным предыдущему, а при несоблюдении открывалась первоначальным лотом.
  2. Воспользовался Вашими советами и ... Помогло. Спасибо большое. А может еще подскажите как правильно написать открыться лотом равным ПОСЛЕДНЕМУ лоту. Это уже для другого советника Или где поискать можно. В хелпе не могу найти
  3. Если меняю вот этот кусок ticket=OrderSend(Symbol(),OP_BUY,Lots*1,Open[0],3,0,"покупка",16384,0,Green); на вот этот ticket=OrderSend(Symbol(),OP_BUY,Lots*1,"покупка",16384,0,Green); То он открывает 1 позу по бай и не закрывает ее.
  4. Добрый день. Нужен простой советник который бы открывал позицию при пересечении 2 МА и закрывал позицию при при обратном пересечении с одновременным открытием противоположной позиции. Без стоп лоссов, ТР и доливок. Пытался найти в просторах нета ничего подобного не нашел. Пытаюсь сделать самостоятельно но он не работает. Может кто нибудь глянет и подскажет чего не так. Код прилагается. //+------------------------------------------------------------------+ //| Mar.mq4 | //| Copyright © 2008, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ extern double Lots = 0.1; // Это переменные, которые будут // отображаться во время // соединения эксперта с графиком //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { double MA_Fast,MA_Low; int total, ticket, cnt; // Просто переменные для использования в программе // присвоение переменным значений MA_Fast=iMA( NULL, 0, 1, 0, MODE_SMA, PRICE_TYPICAL, 1); // быстрая МА MA_Low=iMA( NULL, 0, 20, 0, MODE_SMA, PRICE_CLOSE, 1); // медленная МА if(Bars<100) { Print("bars less than 100"); return(0); } // Это условие проверяет, есть ли в истории графиков более 100 свечей и если нет, // выдает ошибку. Требуется для того, чтобы обратить ваше внимание на проблему // недостатка информации total=OrdersTotal(); if(total<1) // Эта проверка нужна для того, чтобы не открывать сразу нескольких одинаковых позиций. Если ее не будет, то, скажем, если ваш эксперт срабатывает, когда стохастик находится в зоне перекупленности, то он будет совершать сделку на каждом тике, пока не истратит всю маржу. // Поэтому, чтобы ограничить количество открываемых позиций, ставят данный // ограничитель. Если он стоит, то советник не будет открывать более определенного // количества позиций <х { // no opened orders identified if(AccountFreeMargin()<(1000*Lots)) { Print("We have no money. Free Margin = ", AccountFreeMargin()); return(0); } // Еще один вспомогательный кусок кода. Если средств на счете недостаточно, он // выдаст ошибку. Данный кусок полностью бесполезен, если советник работает // в реальном времени, но очень полезен при тестинге на истории. { OrderSelect(OrdersHistoryTotal( )-1, SELECT_BY_POS, MODE_HISTORY); // открытие длинной позиции if(MA_Fast>MA_Low && OrderProfit()>=0) { ticket=OrderSend(Symbol(),OP_BUY,Lots*1,Open[0],3,0,"покупка",16384,0,Green); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice()); } else Print("Error opening BUY order : ",GetLastError()); return(0); } // открытие короткой позиции if(MA_Fast<MA_Low && OrderProfit()>=0) { ticket=OrderSend(Symbol(),OP_SELL,Lots*1,Open[0],3,0,"продажа",16384,0,Red); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice()); } else Print("Error opening BUY order : ",GetLastError()); return(0); } // Наконец, мы добрались до самого интересного. Вместо этих иксов, надо вставить // условие, при котором происходит покупка. // Этот блок нужен только для того, чтобы записать в журнале, все ли прошло гладко. // Или, в противном случае, записать ошибку, из-за которой что-то не получилось. // Теперь о выходе. Тут также ничего не изменилось, просто RRRRRRR - условие // закрытия сделки по BUY, ZZZZZZZZ - по SELL return(0); } total=OrdersTotal(); for(cnt=0;cnt<total;cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()<=OP_SELL && OrderSymbol()==Symbol()) { if(OrderType()==OP_BUY) { if(MA_Fast<MA_Low) { OrderClose(OrderTicket(),OrderLots(),Open[0],5,Red); return(0); } } } if(OrderType()==OP_SELL) { if(MA_Fast>MA_Low) { OrderClose(OrderTicket(),OrderLots(),Open[0],5,Red); return(0); } } } } return(0); } Он не открывает ни одной позиции. Заранее спасибо
  5. Доброго времени суток. У меня вопрос назрел. Хочу открыть счет в MGForex, не сильно большой, баксов на 500. Т.е минимальный возможный. Подскажите люди добрые кто торгует на MGF. У них депозит на реале как будет отображаться: как на WHC - 500$? или как на лайт форексе - 50000$? Нет ли у них возможности торговать микролотами? Вопрос не праздный. Посчитал тут немного на досуге при маржевом плече 1:100 с минимально возможной ставкой 0,1 лота стоимость одного пункта будет 1 бакс. т.о. в случае неудачи слив депо в 500 баксов будет недели через две.
×
×
  • Создать...