Здравствуйте форумчане!!! ищу скрипт открывающий несколько ордеров с рынка с одинаковым лотом и тейпрофитом. Идея выглядит немного бредовой, но нужен именно такой скрипт, для участия в конкурсе, в случае выигрыша обязуюсь отблагодарить :).
- Просите за ФЛУД) Нужен скрипт..
- Ищу скрипт для открытия ордеров процентным лотом
- Сетка для одновременной работы с несколькими инструментами
Нужно открыть какое-то конкретное количество ордеров по одному сигналу в советнике? Или это для ручной торговли?
waitra:
Нужно открыть какое-то конкретное количество ордеров по одному сигналу в советнике? Или это для ручной торговли?
Нужно открыть какое-то конкретное количество ордеров по одному сигналу в советнике? Или это для ручной торговли?
Для ручной, чтоб одним нажатием открывалось несколько ордеров и автоматом устанавливался заданный тейк в пунктах...
chepikds:
Для ручной, чтоб одним нажатием открывалось несколько ордеров и автоматом устанавливался заданный тейк в пунктах...
Для ручной, чтоб одним нажатием открывалось несколько ордеров и автоматом устанавливался заданный тейк в пунктах...
//+------------------------------------------------------------------+ //| test.mq4 | //| Copyright © 2009, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2009, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" #property show_inputs extern int MaxRisk=2; extern bool Buy=false; //для открытия ордера на покупку extern bool Sell=false; //для открытия ордера на продажу extern int TakeProfit=100; extern int StopLoss=100; //+------------------------------------------------------------------+ int start() {double Lot=GetLot(MaxRisk); if(Lot==0) {Alert("Недостаточно средств!");return(0);} RefreshRates(); if(Buy) NewOrder(OP_BUY,Lot); if(Sell) NewOrder(OP_SELL,Lot); return(0);} //+------------------------------------------------------------------+ double GetLot(int Risk) {double Free =AccountFreeMargin(); double One_Lot =MarketInfo(Symbol(),MODE_MARGINREQUIRED); double Min_Lot =MarketInfo(Symbol(),MODE_MINLOT); double Max_Lot =MarketInfo(Symbol(),MODE_MAXLOT); double Step =MarketInfo(Symbol(),MODE_LOTSTEP); double Lot =MathFloor(Free*Risk/100/One_Lot/Step)*Step; if(Lot<Min_Lot) Lot=Min_Lot; if(Lot>Max_Lot) Lot=Max_Lot; if(Lot*One_Lot>Free) return(0.0); return(Lot);} //+------------------------------------------------------------------+ int NewOrder(int Cmd,double Lot) {double TP=0; //тейкпрофит double SL=0; //стоплосс double PR=0; //Цена while(!IsTradeAllowed()) Sleep(100); if(Cmd==OP_BUY) {PR=Ask; if(TakeProfit>0) TP=Ask+TakeProfit*Point; if(StopLoss>0) SL=Ask-StopLoss*Point;} if(Cmd==OP_SELL) {PR=Bid; if(TakeProfit>0) TP=Bid-TakeProfit*Point; if(StopLoss>0) SL=Bid+StopLoss*Point;} int tic=OrderSend(Symbol(),Cmd,Lot,PR,3,SL,TP,"",0,0,CLR_NONE); if(tic<0) Print("Ошибка открытия ордера: ",GetLastError()); return(tic);} //+------------------------------------------------------------------+
waitra:
//±-----------------------------------------------------------------+
//| test.mq4 |
//| Copyright c 2009, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//±-----------------------------------------------------------------+
//±-----------------------------------------------------------------+
//| test.mq4 |
//| Copyright c 2009, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//±-----------------------------------------------------------------+
Если используете переменные Ask\Bid, то при наличии циклов ожидания нужно обновлять рейты и пересчитывать стопы и тейки непосредственно перед выставлением ордеров.
Удачи.
ЗЫ Скрипт поправили - добавьте RefreshRates после циклов ожидания.
waitra:
//+------------------------------------------------------------------+ //| test.mq4 | //| Copyright © 2009, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+
Спасибо, работает, позиции открывает, тейк тоже. не разобрался ещё как объём задавать...
VladislavVG:
Если используете переменные Ask\Bid, то при наличии циклов ожидания нужно обновлять рейты и пересчитывать стопы и тейки непосредственно перед выставлением ордеров.
Удачи.
ЗЫ Скрипт поправили - добавьте RefreshRates после циклов ожидания.
бррр, это куда, подскажите несведущему пожалуйста :)
chepikds:
Спасибо, работает, позиции открывает, тейк тоже. не разобрался ещё как объём задавать...
Пожалуйста :-) Лот рассчитываем с риском в % в зависимости от свободных средств (в моем примере 2%), можно поменять % или фиксированный поставить, тут уже смотря для чего использоваться будет. Если полученный объем лота меньше минимального - выдает сообщение.
Спасибо, работает, позиции открывает, тейк тоже. не разобрался ещё как объём задавать...
waitra:
Пожалуйста :-) Лот рассчитываем с риском в % в зависимости от свободных средств (в моем примере 2%), можно поменять % или фиксированный поставить, тут уже смотря для чего использоваться будет. Если полученный объем лота меньше минимального - выдает сообщение.
Пожалуйста :-) Лот рассчитываем с риском в % в зависимости от свободных средств (в моем примере 2%), можно поменять % или фиксированный поставить, тут уже смотря для чего использоваться будет. Если полученный объем лота меньше минимального - выдает сообщение.
хм, нужен фиксированный лот 1.
chepikds:
бррр, это куда, подскажите несведущему пожалуйста :)
бррр, это куда, подскажите несведущему пожалуйста :)
//+------------------------------------------------------------------+ //| test.mq4 | //| Copyright © 2009, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2009, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" #property show_inputs extern int MaxRisk=2; extern bool Buy=false; //для открытия ордера на покупку extern bool Sell=false; //для открытия ордера на продажу extern int TakeProfit=100; extern int StopLoss=100; //+------------------------------------------------------------------+ int start() {double Lot=GetLot(MaxRisk); if(Lot==0) {Alert("Недостаточно средств!");return(0);} RefreshRates(); if(Buy) NewOrder(OP_BUY,Lot); if(Sell) NewOrder(OP_SELL,Lot); return(0);} //+------------------------------------------------------------------+ double GetLot(int Risk) {double Free =AccountFreeMargin(); double One_Lot =MarketInfo(Symbol(),MODE_MARGINREQUIRED); double Min_Lot =MarketInfo(Symbol(),MODE_MINLOT); double Max_Lot =MarketInfo(Symbol(),MODE_MAXLOT); double Step =MarketInfo(Symbol(),MODE_LOTSTEP); double Lot =MathFloor(Free*Risk/100/One_Lot/Step)*Step; if(Lot<Min_Lot) Lot=Min_Lot; if(Lot>Max_Lot) Lot=Max_Lot; if(Lot*One_Lot>Free) return(0.0); return(Lot);} //+------------------------------------------------------------------+ int NewOrder(int Cmd,double Lot) {double TP=0; //тейкпрофит double SL=0; //стоплосс double PR=0; //Цена while(!IsTradeAllowed()) Sleep(100); RefreshRates(); // СЮДА !!!!!!!! if(Cmd==OP_BUY) {PR=Ask; if(TakeProfit>0) TP=Ask+TakeProfit*Point; if(StopLoss>0) SL=Ask-StopLoss*Point;} if(Cmd==OP_SELL) {PR=Bid; if(TakeProfit>0) TP=Bid-TakeProfit*Point; if(StopLoss>0) SL=Bid+StopLoss*Point;} int tic=OrderSend(Symbol(),Cmd,Lot,PR,3,SL,TP,"",0,0,CLR_NONE); if(tic<0) Print("Ошибка открытия ордера: ",GetLastError()); return(tic);} //+------------------------------------------------------------------+
VladislavVG:
Спасибо.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь