Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1735

 
anrei2002 #:

Ключевое слово ПОМОГАТЬ!

Как я уже писал ранее: Скажите лучше сразу,что на этом форуме этот индикатор  доработать невозможно!

И все...и я пойму....зачем столько шлака было выливать???

я сразу написал.

не получится его исправить, он кривой..

Это было первое, что я написал. Вы не увидели/не осознали/посчитали бредом.

То ,что мою попытку до вас донести, вы считаете шлаком, который тут развели - мне не обидно, я старался не ради вас, кто-нибудь другой почитает кто столкнулся с этой проблемой и не совершит ошибок. А вам удачи с вашим индикатором, поищите другие форумы, раз этот не нравится. 

 
Nikolay Ivanov #:

я сразу написал.

не получится его исправить, он кривой..

исправить можно, но будет перерисовывать 8 крайних баров.

 
anrei2002 #:

Ключевое слово ПОМОГАТЬ!

я вам помог - написал что вам нужно сделать - и?)

что вы из того сделали?

 
Taras Slobodyanik #:

исправить можно, но будет перерисовывать 8 крайних баров.

об этом тоже все говорилось.. также говорилось, что можно сразу подавать сигнал на 9ый бар и не будет перерисовок вообще.. но человек не понимает

Taras Slobodyanik #:

я вам помог - написал что вам нужно сделать - и?)

что вы из того сделали?

кстати вы бы попали(с некоторой вероятностью) на арбитраж, нужно заранее проговаривать все.. то что ему нужно невозможно сделать без оговорок

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2021.11.09
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
Nikolay Ivanov #:

об этом тоже все говорилось.. также говорилось, что можно сразу подавать сигнал на 9ый бар и не будет перерисовок вообще.. но человек не понимает

кстати вы бы попали на арбитраж, нужно заранее проговаривать все.. то что ему нужно невозможно сделать без оговорок

тут всё возможно сделать, человек согласен на перерисовку и сигналы 8 баров назад, какие проблемы?

пс. дивергенции и фракталы тоже в прошлом появляются, ничего страшного.
 
Taras Slobodyanik #:

тут всё возможно сделать, человек согласен на перерисовку и сигналы 8 баров назад, какие проблемы?

ему надо "просто" убрать лишние стрелки и все.. А как это сделать, перерисовкой или нет - ваша задача.. Так и начинается любой арбитраж :)

 Смотря как ТЗ еще сформулировать, но в любом случае - я бы не рискнул... Даже выигранный арбитраж - это месяцы нервотрепок.. 

 
anrei2002 #:

Ключевое слово ПОМОГАТЬ!

Как я уже писал ранее: Скажите лучше сразу,что на этом форуме этот индикатор  доработать невозможно!

И все...и я пойму....зачем столько шлака было выливать???

Именно. Если помогать делать, то это значит, что Вы делаете, а кто-то по мере сил, возможностей и знаний помогает.

Если же вы лишь просите, ничего другого при этом не делая, а кто-то делает за вас - то это бюро добрых услуг.

Я, создавая эту ветку, как раз имел в виду под помощью именно помощь, а не бесплатное изготовление хотелок.

 

Здравсвуйте уважаемые форумчане и опытные программёры! Нужна помощь в доделывании советника)) Подскажите, плиз, как добавить в код советника 2 вещи:

1. Ситуация следующая - открываю ордер (1-ыЙ) с TP и SL и определённым лотом (пусть будет 0,01). Если данный ордер закрывается по тейк-профиту - круто, ничего не меняется. Но, если данный (1-ый) ордер закрывается по SL, то тогда следующий ордер сразу после этого (2-ой) открывается с увелечинным лотом в 2 раза (0,01*2=0,02). Если этот 2-ой ордер закрывается по тейк-профиту - тогда следующий ордер (3-ий) открывается с обычным лотом, т.е. увеличенный лот в 2 раза нужен только на следующий ордер (2-ой) после того как на прошлом (1-ый) было закрытие по SL. Если же на 3-ем ордере во второй раз подряд будет закрытие по SL - тогда лот остаётся увелеченным в 2 раза до тех пор, пока не будет закрытие по TP. Надеюсь, описал подробно логику что нужно добавить;


2. И второе что нужно добавить - это передвижение SL, сейчас объясню на конкретном примере: допустим есть ордер с базовыми парамметрами T.P. + 300, S.L. — 500. Цена идёт в нужную сторону и проходит +100 пиппсов от цены открытия ордера. Как только цена добралась до +100 от цены открытия ордера,  SL должен передвинуться с базовых —500 на + 90 . Т.е. при достижении цены + 100 пиппсов от цены открытия ордеоа, переводим ордер в безубыток выставляя S,L. на + 90 пиппсов. После этого, если цена дальше идёт в нужную сторону, и проходит ещё + 50 пиппсов - S.L. передвигается на 50 пиппсов => теперь он должен быть на отметке в + 140 пиппсов от цены открытия ордера. Т.е. S.L. в первый раз передвигается с базового положения на + 90 пиппсов от цены открытия ордера, а затем передвигается если проходит по + 50 пиппсов ( — 500 => + 90 => + 140 => + 190 и т.д.). И так всё идёт либо до того как цена достигнет T.P. , либо когда движение тренда развернётся и выбьет по S.L.


Надеюсь, что всё подробно описал, и очень надеюсь на вашу помощь, т.к. добавив эти недостоющие элементы, советник будет готов)) Если есть вопросы - спрашивайте))) Ниже выкладываю часть кода советника:

extern string s1                = "Main options";
extern string Symbol            = "";     
extern int timeframe            = 30;     
extern int MagicNumber          = 122122; 
//+------------------------------------------------------------------+
extern string s2                = "Trading options";
extern int BarsForConfirm       = 40;     
extern double Lot               = 0.01;      // размер лота: 0 - авт.расчет (свободная маржа/9000 => 100/5000=0.02 лота); любое другое число - фиксированный лот
extern int StopLoss             = 50;     // стоплосс (в пунктах)
extern int TakeProfit           = 30;     // тейкпрофит (в пунктах)
//+------------------------------------------------------------------+

bool OrderBuy = true, OrderSell = true, Trade = false;  
int timeprev = 0, Slip = 3.0, Start, cnt=1, a;  
datetime newbar=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   if(CheckForOpen()==0) {a=1; Trade = false;}
   else
   if(CheckForOpen()==1) {a=0; Trade = false;}
   else {Trade = true;}
   if (Digits == 3 || Digits == 5) // Пересчет для 5-ти знаков, работает автоматически
     {                                                    
      TakeProfit *= 10;
      StopLoss *=10;
      Slip *=10;
     } 
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  
  {
  
   if(CheckForOpen()==a) Trade = true;
   if(newbar!=Time[0] && Trade==true)  
     {
      if(CheckForOpen()!=Start)        
        {Start=CheckForOpen(); cnt=1;}
      else {cnt+=1;}

      if(cnt==BarsForConfirm) {        
             
                
             
         if(CheckForOpen()==0)         
           {
            if(OrderSend(Symbol(),OP_BUY,Lots(),Ask,Slip,Bid-StopLoss*Point,Ask+TakeProfit*Point,"",MagicNumber,0,Blue))
              {Print("BUY OK");} else {Print(GetLastError());}
           } 
         if(CheckForOpen()==1)         
           {
            if(OrderSend(Symbol(),OP_SELL,Lots(),Bid,Slip,Ask+StopLoss*Point,Bid-TakeProfit*Point,"",MagicNumber,0,Red))
              {Print("SELL OK");} else {Print(GetLastError());}
           }
        }   
      newbar=Time[0];  //открытие ордера на цене открытия свечи
     }
  }
//+------------------------------------------------------------------+
//| Calculate optimal lot size                                       |
//+------------------------------------------------------------------+
double Lots()  // Расчет объема лота
  {
   double Lots;
   if(Lot>0) return(Lot);           
   Lots=AccountFreeMargin()/9000;  // раcчёт лота - свободная маржа/9000 => 100/9000=0.01 лота 
   Lots=MathMin(15,MathMax(0.01,Lots));
   if(Lots<0.1) Lots=NormalizeDouble(Lots,2);
   else 
     {
      if(Lots<1) Lots=NormalizeDouble(Lots,1);
      else       Lots=NormalizeDouble(Lots,0);
     }
   return(Lots);
  }
//+------------------------------------------------------------------+
 
MakarFX #:

Лови

Спасибо большое. Извини, что сразу не ответил - отвлекли.
попробовал его в деле, заметил маленькую проблемку...
Он рисует только если я запускаю его на символе USDX.
На EURUSD не отображается (понятно, что я изменяю Symbol_2).
Смотри картинки, там, может, понятней будет.
Есть идеи почему это так, как исправить ?
Файлы:
EURUSD.JPG  260 kb
USDX.JPG  318 kb
 

Здравствуйте.

Извиняюсь за глупый вопрос... Ордер то выставляется нормально то ошибка 129 - неправильная цена. Уже клиника... Помогите разобраться... ((


        int f = OrderSend(para_2,OP_BUY,0.1,Ask_para_2,3,0,0,"",0,Blue); if(f < 0){Alert("Ошибка установки ордера Buy Stop: ", GetLastError());}
          

Причина обращения: