Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1815 1...180818091810181118121813181418151816181718181819182018211822...1953 Novo comentário Tretyakov Rostyslav 2021.12.15 11:42 #18141 Alexander Avksentyev #: O que são "iTrailStart" e "iTrailDist"? Alexander Avksentyev 2021.12.15 11:44 #18142 Tretyakov Rostyslav #:O que são "iTrailStart" e "iTrailDist"? Número de pontos a serem ligados e distância do mercado para a rede de arrasto iTrailStart = 10; //Número de pontos para habilitar a rede de arrasto; iTrailDist = 10; //Distância desde a parada até o mercado; Se a ordem está no mais por 11 pips, então 11-10=1 pips sem perda. Sistema frio! Ajude qualquer um que [AVISO FECHADO!] Qualquer pergunta Tretyakov Rostyslav 2021.12.15 12:02 #18143 Alexander Avksentyev #:Número de pontos a incluir e distância do mercado a tsl Mais ou menos //--- input parameters int iTrailStart = 10; //Кол-во пунктов для включения тралa int iTrailDist = 10; //Расстояние от стопа до рынка //--- global parameters int iDistTrail = iTrailDist; //+------------------------------------------------------------------+ void OnTick() { //--- if(iDistTrail<MarketInfo(Symbol(),MODE_STOPLEVEL)) iDistTrail = MarketInfo(Symbol(),MODE_STOPLEVEL); // дальше твой код } //+------------------------------------------------------------------+ void TrailSL() { if(iTrailStart <= 0) return; double sl_lev; for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if(OrderType() == OP_BUY) { if ((OrderStopLoss() == 0 && Bid > OrderOpenPrice() + iTrailStart * _Point)||(OrderStopLoss() != 0 && Bid > OrderStopLoss() + (iDistTrail+iTrailStep) * _Point)) { sl_lev = NormalizeDouble(Bid - iDistTrail * _Point,Digits); if (OrderModify(OrderTicket(), OrderOpenPrice(), sl_lev, OrderTakeProfit(), 0, clrRed)) Print("Удачная модифиция стоплосс ордера №",OrderTicket()); else Print("Не удалось модифицировать стоплосс ордера №",OrderTicket(),". Ошибка: ",GetLastError()); } } if(OrderType() == OP_SELL) { if ((OrderStopLoss() == 0 && Ask < OrderOpenPrice() - iTrailStart * _Point)||(OrderStopLoss() != 0 && Ask < OrderStopLoss() - (iDistTrail+iTrailStep) * _Point)) { sl_lev = NormalizeDouble(Ask + iDistTrail * _Point,Digits); if (OrderModify(OrderTicket(), OrderOpenPrice(), sl_lev, OrderTakeProfit(), 0, clrRed)) Print("Удачная модифиция стоплосс ордера №",OrderTicket()); else Print("Не удалось модифицировать стоплосс ордера №",OrderTicket(),". Ошибка: ",GetLastError()); } } } } } } //+------------------------------------------------------------------+ Tretyakov Rostyslav 2021.12.15 12:14 #18144 Existe um ENUM para estas constantes ou eu tenho que escrever o meu próprio ENUM? Constante Valor Descrição LINHA_DRAW 0 Linha simples DESENHAR_SECÇÃO 1 Segmentos de linha entre valores de linha não vazios DESENHAR_HISTOGRAMA 2 Histograma DESENHARROW_ARROW 3 Setas (símbolos) DRAW_ZIGZAG 4 Intervalos entre os valores não vazios das linhas pares e ímpares (zig-zag), 2 DESENHAR_NENHUM 12 Nenhum desenho de qualquer tipo Indicadores de elite :) [Arquivo!] Qualquer pergunta de Demonstrando a abordagem de Alexey Viktorov 2021.12.15 12:25 #18145 Tretyakov Rostyslav #:Existe um ENUM para estas constantes ou eu tenho que escrever o meu próprio ENUM? Constante Valor Descrição LINHA_DRAW 0 Linha simples DESENHAR_SECÇÃO 1 Segmentos de linha entre valores de linha não vazios DESENHAR_HISTOGRAMA 2 Histograma DESENHARROW_ARROW 3 Setas (símbolos) DRAW_ZIGZAG 4 Intervalos entre os valores não vazios das linhas pares e ímpares (zig-zag), 2 DESENHAR_NENHUM 12 Sem desenho Estilos de desenho ENUM_DRAW_TYPE desculpe o mql4 não tem tal coisa... Tretyakov Rostyslav 2021.12.15 12:30 #18146 Alexey Viktorov #: Estilos de desenho ENUM_DRAW_TYPE Desculpe, o mql4 não tem tal coisa... Obrigado, vou escrever o meu próprio) Alexander Avksentyev 2021.12.15 14:23 #18147 Tretyakov Rostyslav #:É assim que as coisas são. Obrigado, vou continuar cavando, descobrir. Alexander Avksentyev 2021.12.15 15:11 #18148 Tretyakov Rostyslav #:Algo como isto int Login = 4950287; datetime time = D'2022.01.01 00:00:00'; string name = "Test"; datetime time1 = 0; double TP, lastlot, minlot; int Forder; int TakeProfit,TrailStart,TrailDist,TrailStep,TrailTakeProfit,Step,Slippage; double level_count=0; int iDistTrail = iTrailDist; //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// //Torder-Цена открытия первого ордера //+------------------------------------------------------------------+ //| 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// TakeProfit =iTakeProfit; TrailStart =iTrailStart; TrailDist =iTrailDist; TrailStep =iTrailStep; TrailTakeProfit =iTrailTakeProfit; Step =iStep; Slippage =iSlippage; //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() { //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// /* Comment( "\n", name, "\n", " ", Symbol(), "\n", "Тайм Фрейм ", Period(), "\n", AccountCompany(), "\n", "\n ", AccountServer(), "\n", "Lots\n", B_S_Lot(), "\n", "Price ", Bid, "\n", "Дата ", TimeToString( TimeCurrent(), TIME_DATE ), "\n", "Server Time ", TimeToString( TimeCurrent(), TIME_SECONDS ), "\n", "Profit ", Profit(), "\n", "AvTP ", CalcTP (), "\n", "Количество ордеров ", CountTrades(), "\n", "\n ", GetVolumeLotLastOrder(), "\n", "\n", "Процент просадки ", NormalizeDouble( (AccountInfoDouble(ACCOUNT_BALANCE)-AccountInfoDouble(ACCOUNT_MARGIN_FREE))/AccountInfoDouble(ACCOUNT_BALANCE)*100,2) );*/ //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// double body = Close[1] - Open[1]; if (CountTrades() == 0 && body > 0) BuyOpen(); // Если нет открытых и сигнал бай if (CountTrades() == 0 && body < 0) SellOpen(); // Если нет открытых и сигнал селл if (CountTrades(0) > 0 && body > 0) BuyOpen(); // Если есть открытые бай и сигнал бай if (CountTrades(1) > 0 && body < 0) SellOpen(); // Если есть открытые селл и сигнал селл /* if (iTrailStart<MarketInfo(Symbol(),MODE_STOPLEVEL)) iTrailStart= MarketInfo(Symbol(), MODE_STOPLEVEL * Point); iTrailSL(); */ if(iDistTrail<MarketInfo(Symbol(),MODE_STOPLEVEL)) iDistTrail = MarketInfo(Symbol(),MODE_STOPLEVEL); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// void BuyOpen() //Открытие позиции Buy { Forder = (OrderSend(_Symbol,OP_BUY,Lot,Ask,iSlippage,0,0,"Коммент",Magic,0,Blue)); if(Forder > 0) { Print("Открыта Позиция BUY"); if(OrderSelect(Forder, SELECT_BY_TICKET)) { TP = NormalizeDouble((Ask+iTakeProfit*_Point),_Digits); if (OrderModify(OrderTicket(),OrderOpenPrice(),0,TP,0)) Print("Ордер Модифицирован BUY "); else Print("Ошибка Модификации Ордера BUY = ",GetLastError()); } } else Print("Ошибка Открытия Позиции BUY"); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// void SellOpen() //Открытие позиции Sell { Forder = (OrderSend(_Symbol,OP_SELL,Lot,Bid,iSlippage,0,0,"Коммент Sell",Magic,0,Red)); if (Forder > 0) { Print("Открыта Позиция SELL"); if(OrderSelect(Forder, SELECT_BY_TICKET)) { TP = NormalizeDouble((Bid-iTakeProfit*_Point),_Digits); if (OrderModify(OrderTicket(),OrderOpenPrice(),0,TP,0)) Print("Ордер Модифицирован SELL "); else Print("Ошибка Модификации Ордера SELL = ",GetLastError()); } } else Print("Ошибка Открытия Позиции SELL"); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// //+------------------------------------------------------------------+ //| Tester function | //+------------------------------------------------------------------+ double OnTester() { //--- double ret=0.0; //--- //--- return(ret); } //+------------------------------------------------------------------+ //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// //+------------------------------------------------------------------+ //| Подсчёт эквити | //+------------------------------------------------------------------+ double Profit(){double count=0; for (int i=OrdersTotal()-1; i>=0; i--){ if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){ if(OrderSymbol() == Symbol() && OrderMagicNumber()==Magic) count+=OrderProfit(); count+=OrderSwap(); } } return(NormalizeDouble(count, 2)); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// void TrailSL() { if(iTrailStart <= 0) return; double sl_lev; for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if(OrderType() == OP_BUY) { if ((OrderStopLoss() == 0 && Bid > OrderOpenPrice() + iTrailStart * _Point)||(OrderStopLoss() != 0 && Bid > OrderStopLoss() + (iDistTrail+iTrailStep) * _Point)) { sl_lev = NormalizeDouble(Bid - iDistTrail * _Point,Digits); if (OrderModify(OrderTicket(), OrderOpenPrice(), sl_lev, OrderTakeProfit(), 0, clrRed)) Print("Удачная модифиция стоплосс ордера №",OrderTicket()); else Print("Не удалось модифицировать стоплосс ордера №",OrderTicket(),". Ошибка: ",GetLastError()); } } if(OrderType() == OP_SELL) { if ((OrderStopLoss() == 0 && Ask < OrderOpenPrice() - iTrailStart * _Point)||(OrderStopLoss() != 0 && Ask < OrderStopLoss() - (iDistTrail+iTrailStep) * _Point)) { sl_lev = NormalizeDouble(Ask + iDistTrail * _Point,Digits); if (OrderModify(OrderTicket(), OrderOpenPrice(), sl_lev, OrderTakeProfit(), 0, clrRed)) Print("Удачная модифиция стоплосс ордера №",OrderTicket()); else Print("Не удалось модифицировать стоплосс ордера №",OrderTicket(),". Ошибка: ",GetLastError()); } } } } } } //+------------------------------------------------------------------+ Aqui está o código, talvez eu o tenha entendido mal, mas não há efeito algum. Tretyakov Rostyslav 2021.12.15 15:38 #18149 Alexander Avksentyev #:Aqui está o código, talvez eu o tenha entendido mal, mas não há efeito algum. O que está no diário de bordo? Afixar o código inteiro, anexá-lo como um arquivo. Alexander Avksentyev 2021.12.15 15:49 #18150 Tretyakov Rostyslav #:O que está no diário de bordo? Onde estão os //--- parâmetros de entrada? #property strict string _0_ = "Test"; extern string _1_ = " МАРТИН 1 - вкл. 2 - выкл."; extern int _2_ = 1; extern string _3_ = "множитель след. лота"; extern double LotMultiplikator = 1.667; extern string _4_ = "начальный лот:"; extern string _5_ = "true - постоянный, false - от баланса"; extern bool LotConst_or_not = FALSE; extern double Lot = 0.01; extern double RiskPercent = 30.0; extern string _6_ = "прибыль в пунктах - ТР"; input int iTakeProfit = 10; //TakeProfit; extern string _7_ = "настройки трейлинга"; input int iTrailStart = 10; //Кол-во пунктов для включения тралa; input int iTrailDist = 10; //Расстояние от стопа до рынка; input int iTrailStep = 10; //Шаг трейлинг стопа"; input int iTrailTakeProfit = 10; //TakeProfit после включения трейлинга"; extern string _8_ = "расстояние м/у ордерами"; input int iStep = 10; //Шаг; extern double StepCoef = 1.5; //Множитель шага между ордерами"; extern string _9_ = "МАX кол-во ордеров"; input int MaxTrades = 30; extern string _10_ = "Ограничение потерь"; extern bool UseEquityStop = FALSE; extern double TotalEquityRisk = 20.0; extern string _11_ = "Идентификатор ордера"; extern int Magic = 12345; extern string _12_ = "логотип и вывод данных"; extern bool ShowTableOnTesting = TRUE; extern string _13_ = "(true-вкл.,false-выкл.)"; extern int iSlippage = 5; extern int MinOrders = 1000; //АвтоРассчётЛота; //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Onde está a entrada Onde está o exterior Entenda a diferença. 1...180818091810181118121813181418151816181718181819182018211822...1953 Novo comentário
O que são "iTrailStart" e "iTrailDist"?
O que são "iTrailStart" e "iTrailDist"?
Número de pontos a serem ligados e distância do mercado para a rede de arrasto
iTrailStart = 10; //Número de pontos para habilitar a rede de arrasto;
iTrailDist = 10; //Distância desde a parada até o mercado;
Se a ordem está no mais por 11 pips, então 11-10=1 pips sem perda.
Número de pontos a incluir e distância do mercado a tsl
Mais ou menos
Existe um ENUM para estas constantes ou eu tenho que escrever o meu próprio ENUM?
Constante
Valor
Descrição
LINHA_DRAW
0
Linha simples
DESENHAR_SECÇÃO
1
Segmentos de linha entre valores de linha não vazios
DESENHAR_HISTOGRAMA
2
Histograma
DESENHARROW_ARROW
3
Setas (símbolos)
DRAW_ZIGZAG
4
Intervalos entre os valores não vazios das linhas pares e ímpares (zig-zag), 2
DESENHAR_NENHUM
12
Nenhum desenho de qualquer tipo
Existe um ENUM para estas constantes ou eu tenho que escrever o meu próprio ENUM?
Constante
Valor
Descrição
LINHA_DRAW
0
Linha simples
DESENHAR_SECÇÃO
1
Segmentos de linha entre valores de linha não vazios
DESENHAR_HISTOGRAMA
2
Histograma
DESENHARROW_ARROW
3
Setas (símbolos)
DRAW_ZIGZAG
4
Intervalos entre os valores não vazios das linhas pares e ímpares (zig-zag), 2
DESENHAR_NENHUM
12
Sem desenho
ENUM_DRAW_TYPE
Estilos de desenho
ENUM_DRAW_TYPE
É assim que as coisas são.
Obrigado, vou continuar cavando, descobrir.
Algo como isto
Aqui está o código, talvez eu o tenha entendido mal, mas não há efeito algum.
Aqui está o código, talvez eu o tenha entendido mal, mas não há efeito algum.
O que está no diário de bordo?
Afixar o código inteiro, anexá-lo como um arquivo.
O que está no diário de bordo?
Onde estão os //--- parâmetros de entrada?
Onde está a entrada
Onde está o exterior
Entenda a diferença.