Ищу срипт открывающий одновременно несколько ордеров. - страница 2 12 Новый комментарий [Удален] 2010.11.08 11:51 #11 chepikds: хм, нужен фиксированный лот 1. Я сегодня само воплощение доброты :-) //+------------------------------------------------------------------+ //| 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 bool Buy=false; //для открытия ордера на покупку extern bool Sell=false; //для открытия ордера на продажу extern int TakeProfit=100; extern int StopLoss=100; //+------------------------------------------------------------------+ int start() {double Lot=1; //ставим фиксированный лот if(Lot==0) {Alert("Недостаточно средств!");return(0);} RefreshRates(); if(Buy) NewOrder(OP_BUY,Lot); if(Sell) NewOrder(OP_SELL,Lot); return(0);} //+------------------------------------------------------------------+ 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);} //+------------------------------------------------------------------+ Dmitry Chepik 2010.11.08 12:41 #12 waitra: Я сегодня само воплощение доброты :-) спасибо, что возитесь со мной :), всё заработало, запускаю!!! даст бог и конкурс будет выигран! Dmitry Chepik 2010.11.10 01:23 #13 waitra, не знаю в чём причина, но не точно закрывает позиции при фиксированном стопе (10): Alexander Sevastyanov 2010.11.10 10:10 #14 chepikds: waitra, не знаю в чём причина, но не точно закрывает позиции при фиксированном стопе (10): Фиксированный не стоп, а тейк. На сколько он выставлен на столько прибыль и фиксируется. Всё правильно. А о причине Владислав писал уже: нужно RefreshRates() вставить в цикле перед пересчётом тейков/стопов и открытием позиции. Dmitry Chepik 2010.11.10 16:48 #15 goldtrader: Фиксированный не стоп, а тейк. На сколько он выставлен на столько прибыль и фиксируется. Всё правильно. А о причине Владислав писал уже: нужно RefreshRates() вставить в цикле перед пересчётом тейков/стопов и открытием позиции. ага, тейк, я перепутал. RefreshRates() вставил, вот такой код получился: //+------------------------------------------------------------------+ //| 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 bool Buy=false; //для открытия ордера на покупку extern bool Sell=false; //для открытия ордера на продажу extern int TakeProfit=10; extern int StopLoss=0; //+------------------------------------------------------------------+ int start() {double Lot=1; //ставим фиксированный лот if(Lot==0) {Alert("Недостаточно средств!");return(0);} RefreshRates(); if(Buy) NewOrder(OP_BUY,Lot); if(Sell) NewOrder(OP_SELL,Lot); return(0);} //+------------------------------------------------------------------+ 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);} //+------------------------------------------------------------------+ Alexander Sevastyanov 2010.11.10 17:05 #16 chepikds: ага, тейк, я перепутал. RefreshRates() вставил, вот такой код получился: Другое дело - теперь должен работать корректно. Dmitry Chepik 2010.11.11 00:26 #17 goldtrader: Другое дело - теперь должен работать корректно. не хочет корректно. [Удален] 2018.05.06 23:27 #18 Подскажите пожалуйста код, который добавляет сразу, к примеру, 10 ордеров за раз. Konstantin Nikitin 2018.05.06 23:45 #19 Evgeniy Kostin: Подскажите пожалуйста код, который добавляет сразу, к примеру, 10 ордеров за раз.for(int cnt=0; cnt<1000; cnt++) { while(true) { if(OrderSend(...)>0) break; } }Какой вопрос, такой ответ [Удален] 2018.12.11 20:41 #20 Костя, Спасибо! =) 12 Новый комментарий
хм, нужен фиксированный лот 1.
Я сегодня само воплощение доброты :-)
Я сегодня само воплощение доброты :-)
спасибо, что возитесь со мной :), всё заработало, запускаю!!! даст бог и конкурс будет выигран!
waitra, не знаю в чём причина, но не точно закрывает позиции при фиксированном стопе (10):
waitra, не знаю в чём причина, но не точно закрывает позиции при фиксированном стопе (10):
Фиксированный не стоп, а тейк. На сколько он выставлен на столько прибыль и фиксируется. Всё правильно.
А о причине Владислав писал уже: нужно RefreshRates() вставить в цикле перед пересчётом тейков/стопов и открытием позиции.
Фиксированный не стоп, а тейк. На сколько он выставлен на столько прибыль и фиксируется. Всё правильно.
А о причине Владислав писал уже: нужно RefreshRates() вставить в цикле перед пересчётом тейков/стопов и открытием позиции.
ага, тейк, я перепутал. RefreshRates() вставил, вот такой код получился:
ага, тейк, я перепутал. RefreshRates() вставил, вот такой код получился:
Другое дело - теперь должен работать корректно.
не хочет корректно.
Подскажите пожалуйста код, который добавляет сразу, к примеру, 10 ордеров за раз.