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

 
MatveySt #:

Добрый день.Нужна помощь! Идея не нова, индикатор на основе двух МА с разными периодами,  на одном таймфреме( Н1), при пересечении МА1 и МА2 даёт сигнал, после чего переключается на младший таймфрейм(М30) и ждёт подтверждения этого сигнала. 

Это решается путём создания двух одинаковых индикаторов на разных таймфремах или можно как-то по другому? Нужно что-бы один и тот же индикатор после поступления первого сигнала переходил на младший таймфрейм,  Помогите разобраться!

Что именно не понятно!

 
Rustam Ayupov # :

Hallo. Vielen Dank für Ihr Feedback. Ich suche jetzt im Expertenprogramm nach dem Grund für die fehlerhafte Schließung von mit Verlusten geschlossenen Positionen. Dieser Expert Advisor schließt auch unvermietbare Transaktionen mit dem zweiten Broker ab, so dass der Grund im Expert Advisor liegt. Gleichzeitig plane ich, Handelsterminals und einfache Expert Advisors zu testen, ohne objektorientierte Programmierung. Dies den Ort, von dem aus falschen Aufträgen zeigt für Transaktionen geboren werden.

Woher wissen wir genau, dass es fehlerhafte Schließungen waren? Beobachten wir das Verhalten des EAs doch einmal genau im visuellen Tester...
 
Andrei Sokolov #:

Что именно не понятно!

Как сделать что-бы один и тот-же индикатор переключался с одного таймфрема(Н1) на другой (М30)? 

 
MatveySt #:

Как сделать что-бы один и тот-же индикатор переключался с одного таймфрема(Н1) на другой (М30)? 

Уменьшить период расчета МА в 2 раза. Формулу МА гляньте на досуге))) Но лучше быть на младшем ТФ и увеличивать период расчета в нужное количество раз. Так вернее результат будет.

 
MatveySt #:

Как сделать что-бы один и тот-же индикатор переключался с одного таймфрема(Н1) на другой (М30)? 

Задавать в функцию расчета индикатора таймфрейм в зависимости от условий.

 
Valeriy Yastremskiy #:

 Формулу МА гляньте на досуге)))

Функция расчета ма есть в стоке.

 
ДА, я понял. Спасибо всем!!
 

здравствуйте

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

задача: при смещении цены подтягивать стоп но на каждом шаге уменьшая параметр TrailingStoр, например

шаг 1 - подтянул стоп на 100п

шаг 2 - подтянул стоп на 99п

шаг 3 -98п

и т.д.

как решить задачу?

пробую через  Префиксный декремент (--k), но не понимаю как его правильно применить?

void TrailingPositions() 
  {
   double pBid,pAsk,pp;

   pp=MarketInfo(OrderSymbol(),MODE_POINT);
   if(OrderType()==OP_BUY) 
     {
      pBid=MarketInfo(OrderSymbol(),MODE_BID);
      if(!ProfitTrailing || (pBid-OrderOpenPrice())>TrailingStop*pp) 
        {
         if(OrderStopLoss()<pBid-(TrailingStop+TrailingStep-1)*pp) 
           {
            ModifyStopLoss(pBid-TrailingStop*pp);
            return;
           }
        }
     }
   if(OrderType()==OP_SELL) 
     {
      pAsk=MarketInfo(OrderSymbol(),MODE_ASK);
      if(!ProfitTrailing || OrderOpenPrice()-pAsk>TrailingStop*pp) 
        {
         if(OrderStopLoss()>pAsk+(TrailingStop+TrailingStep-1)*pp || OrderStopLoss()==0) 
           {
            ModifyStopLoss(pAsk+TrailingStop*pp);
            return;
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Перенос уровня StopLoss                                          |
//| Параметры:                                                       |
//|   ldStopLoss - уровень StopLoss                                  |
//+------------------------------------------------------------------+
void ModifyStopLoss(double ldStopLoss) 
  {
   bool fm;

   fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(),0,CLR_NONE);
   if(fm && UseSound) PlaySound(NameFileSound);
  }
 

Нужна глобальная переменная, в которой Вы будете хранить текущее состояние размера трала.

int Trailing=100;

void TrailingPositions(int &eTrailing) 
   {
   ............
   eTrailing-=5;
   }
 
Aleksei Stepanenko #:

Нужна глобальная переменная, в которой Вы будете хранить текущее состояние размера трала.

Спасибо.

int Trailing=100; - это разместил в области глобальных переменных в самом начале советника

void TrailingPositions(int &eTrailing) записал как есть в место  void TrailingPositions() в начальной строке функции

eTrailing-=5; в конце функции перед последними скобками (что такое  eTrailing- ?, и почему  =5?, кстати)

сов. ругается в таком случае

'TrailingOrders' - wrong parameters count


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