Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1808 1...180118021803180418051806180718081809181018111812181318141815...1953 Novo comentário Tretyakov Rostyslav 2021.12.10 19:49 #18071 Alexander Avksentyev #:Boa tarde. Estou aprendendo a escrever código e tenho um problema. O código no testador funciona, abre uma profissão e pronto. O preço não muda, tudo pára na hora. Quem não se importa, por favor, avise. Ask+TakeProfit*_Point+OrderSwap()+OrderCommission() Como você adiciona troca e comissão ao preço? Alexander Avksentyev 2021.12.10 20:03 #18072 MakarFX #:Como você adiciona troca e comissão ao preço? Como eu faço isso?) (((Ask+TakeProfit*_Point+OrderSwap()+OrderCommission()*_Point)) Você acha que isso é um problema? Ivan Butko 2021.12.10 20:13 #18073 Como faço para Comentar ou Imprimir no log na função OnTimer funcionar no testador durante a visualização? Tretyakov Rostyslav 2021.12.10 20:22 #18074 Alexander Avksentyev #:Como eu sei contar). Você acha que esse é o problema? Primeiro, quando você abre uma troca, não há nenhuma troca. Segundo, vamos assumir a comissão de 1$ você abre um pedido na libra a 1,32500 você adiciona (TakeProfit) 200*_Ponto e (comissão) 1$ e você termina com um TP de 2,32700 ... Em que década seria isso? FOREX - Tendências, previsões Pilha de preços futuros Limpeza no testador Tretyakov Rostyslav 2021.12.10 20:22 #18075 Ivan Butko Comentar ou imprimir no log na função OnTimer funcionar no testador ao renderizar? Adicionar onTimer ao onTick Ivan Butko 2021.12.10 20:27 #18076 MakarFX #: Adicionar onTimer ao onTick Obrigado Alekseu Fedotov 2021.12.10 20:28 #18077 Alexander Avksentyev #:Como eu sei contar). Você acha que esse é o problema? Não, não está certo. Com OrderModify, isso é mais correto. E melhor como um bloco separado. if (OrderSelect(Forder, SELECT_BY_TICKET)) { TP = NormalizeDouble((Ask+TakeProfit*_Point),_Digits); if(OrderModify(OrderTicket(),OrderOpenPrice(),0,TP,0) Print("Ордер Модифицирован BUY "); else Print("Ошибка Модификации Ордера BUY = ",GetLastError()); } Tretyakov Rostyslav 2021.12.10 20:28 #18078 Alexander Avksentyev #:Como eu sei contar). Você acha que esse é o problema? Eu não acho que esse seja o problema, simplesmente não está certo. E quanto ao congelamento do testador, é melhor afixar o código inteiro e veremos. OrderCommission()*_Point Isso também não está certo. _Os pontos são casas decimais e não se traduzem em pontos de forma alguma Interessante e Humor Ajuda na codificação EURUSD - Tendências, Previsões Alexander Avksentyev 2021.12.10 21:04 #18079 MakarFX #:Eu não acho que esse seja o problema, simplesmente não está certo. E quanto ao congelamento do testador, é melhor afixar o código inteiro e ver. Isso também não está certo. _Ponto é decimal e não se traduz em pontos de forma alguma int Login = 4950287; datetime time = D'2022.01.01 00:00:00'; string name = "AutoP_v.3.0"; datetime time1 = 0; double price, TP, lastlot, minlot; int Forder; //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { if(AccountNumber() != Login) { int close = MessageBox("Неверный номер счёта","Ошибка",MB_OK|MB_ICONSTOP); return(INIT_FAILED); }else (AccountNumber() == Login); { int close = MessageBox("Проверка прошла успешно.Экcперт может приступить к работе.","Инициализация",MB_OK|MB_ICONEXCLAMATION); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// if (TimeCurrent() > time) { int close = MessageBox("Время работы закончилось!!!","Время работы",MB_OK|MB_ICONSTOP); return(INIT_FAILED); }else(TimeCurrent() < time); { int close = MessageBox("Проверка времени работы прошла успешно.Эксперт может приступить к работе!","Время работы",MB_OK|MB_ICONEXCLAMATION); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// if(Digits == 3 || Digits == 5) { TakeProfit *=10; TrailStart *=10; TrailDist *=10; TrailStep *=10; TrailTakeProfit *=10; Step *=10; Slippage *=10; } return(INIT_SUCCEEDED); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { double body = Close[1] - Open[1]; //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// //Открытие позиции Buy if (body > 0) { Forder = (OrderSend(_Symbol,OP_BUY,Lot,Ask,Slippage,0,0,"Коммент",Magic,0,Blue)); { Print("Открыта Позиция BUY"); { if(Forder > 0) if(OrderSelect(Forder, SELECT_BY_TICKET)) { TP = NormalizeDouble((Ask+TakeProfit*_Point),_Digits); if (OrderModify(OrderTicket(),OrderOpenPrice(),0,TP,0)) Print("Ордер Модифицирован BUY "); else Print("Ошибка Модификации Ордера BUY = ",GetLastError()); } } }Print("Ошибка Открытия Позиции BUY"); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// //Открытие позиции Sell if (body < 0) { Forder = (OrderSend(_Symbol,OP_SELL,Lot,Bid,Slippage,0,0,"Коммент Sell",Magic,0,Red)); { Print("Открыта Позиция SELL"); if (Forder > 0) if(OrderSelect(Forder, SELECT_BY_TICKET)) { TP = NormalizeDouble((Bid-TakeProfit*_Point),_Digits); if (OrderModify(OrderTicket(),OrderOpenPrice(),0,TP,0)) Print("Ордер Модифицирован SELL "); else Print("Ошибка Модификации Ордера SELL = ",GetLastError()); } } }Print("Ошибка Открытия Позиции BUY");} //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// //+------------------------------------------------------------------+ //| Tester function | //+------------------------------------------------------------------+ double OnTester() { //--- double ret=0.0; //--- //--- return(ret); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// int CountTrades() { int count = 0; for(int i = OrdersTotal()-1; i>=0; i++ ) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol() == _Symbol && OrderMagicNumber() == Magic) { count++; } } }return (count); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// Está tudo aí. Obrigado por sua ajuda. Alexander Avksentyev 2021.12.10 21:04 #18080 Alekseu Fedotov #:Não, isso não está certo. Com OrderModify, isso é mais correto. E melhor como um bloco separado. Ok, obrigado! 1...180118021803180418051806180718081809181018111812181318141815...1953 Novo comentário
Boa tarde. Estou aprendendo a escrever código e tenho um problema. O código no testador funciona, abre uma profissão e pronto. O preço não muda, tudo pára na hora.
Quem não se importa, por favor, avise.
Ask+TakeProfit*_Point+OrderSwap()+OrderCommission()Como você adiciona troca e comissão ao preço?
Como você adiciona troca e comissão ao preço?
Como eu faço isso?)
Você acha que isso é um problema?
Como eu sei contar).
Você acha que esse é o problema?
Primeiro, quando você abre uma troca, não há nenhuma troca.
Segundo, vamos assumir a comissão de 1$ você abre um pedido na libra a 1,32500
você adiciona (TakeProfit) 200*_Ponto e (comissão) 1$ e você termina com um TP de 2,32700 ... Em que década seria isso?
Adicionar onTimer ao onTick
Obrigado
Como eu sei contar).
Você acha que esse é o problema?
Não, não está certo.
Com OrderModify, isso é mais correto.
E melhor como um bloco separado.
Como eu sei contar).
Você acha que esse é o problema?
Eu não acho que esse seja o problema, simplesmente não está certo. E quanto ao congelamento do testador, é melhor afixar o código inteiro e veremos.
OrderCommission()*_PointIsso também não está certo.
_Os pontos são casas decimais e não se traduzem em pontos de forma algumaEu não acho que esse seja o problema, simplesmente não está certo. E quanto ao congelamento do testador, é melhor afixar o código inteiro e ver.
Isso também não está certo.
_Ponto é decimal e não se traduz em pontos de forma algumaEstá tudo aí. Obrigado por sua ajuda.
Não, isso não está certo.
Com OrderModify, isso é mais correto.
E melhor como um bloco separado.
Ok, obrigado!