А давайте сделаем из этого "мультик" (мультивалютник) - страница 12

 
Swan >>:

приблизительно так:

Спасибо..
  

 

Интересно по мажорам щас прям расклад для моего експерта..))

по 4 часам фунт, евра, чиф, новозеландец, канадец, австралиец.. встали в позу готовности) 

Можно попробовать связать как-то.. сделать анализ общий.. Если совпадают направления выбранных пар то ставимся...

 
ALex2008 >>:

Спасибо..

Вроде так должно быть..


      CheckBU=false;
      if(Type==0 && Stop>OpenPrise) CheckBU=true;
      if(Type==1 && Stop<OpenPrise) CheckBU=true;  

возможно и без этого будет работать, так надежнее :)


if ((Type<=1)&&(Stop==0||Stop!=StopLoss))       SetStop();

StopLoss вычисляеться в функции SetStop(). Одинаково будет с

if (Type<=1)       SetStop();
 
Swan >>:

StopLoss вычисляеться в функции SetStop(). Одинаково будет с

Не тут другое дело.. Это проверка конечно не правильная, но этим хотел сделать проверку левого стопа.. он должен быть 

или такой

StopLoss=MathMax(b0,b1);
или такой

StopLoss=MathMin(s0,s1);

Поэтому первый раз StopLoss равен -0


if(!WorkOrders()){
      StopLoss=0;

А потом уже присваевается одно из значений выше.. И соответственно если стоп именно такой, то он больше не проверяется..

Swan >>:

возможно и без этого будет работать, так надежнее :)

Поправил..)





 
Swan >>:

if (Type<=1)       SetStop();

А если сразу туда отправлять.. то каждые 4 часа будут новые параметры для стопа (b1,s1,b0,s0).. и он будет изменяться..

 

Попробовал как-то по человечески написать... исправить..

Добавил логическую переменную mod в проверку стопа..

//+------------------------------------------------------------------+
//|                                                    CandyLite.mq4 |
//|                                                    Ш.Александр.В |
//|                                              shestovav@gmail.com |
//+------------------------------------------------------------------+
#property copyright "Ш.Александр.В"
#property link      "shestovav@gmail.com"

#include <stdlib.mqh>

extern double Profit    = 3000;
extern double Lot       = 0.1;
extern bool BU          = true;
extern double BUenter   = 150;
extern double BUstop    = 10;


int Type,Ticket;
double OpenPrise,EnterBU,StopLossBU,SLmax,Stop,StopLevel,b1,s1,b0,s0,StopLoss,Enter;
bool mod,CheckBU;

int init(){
   Profit*=Point; 
   BUenter*=Point;
   BUstop*=Point;
   return(0);
  }

int deinit() {
   return(0);
  }

int start() {
   StopLevel=Point*MarketInfo(Symbol(),MODE_STOPLEVEL);   // вычисление стоплевел //Point*
   
   if(!WorkOrders()){
      mod=false;
      StopLoss=0;
      StopLossBU=0;
      UpTrend();
      DownTrend();
   }
      
   if(WorkOrders()){
      if ((Type<=1)&&(Stop==0||!mod))                 SetStop();
      if ((BU==true)&&(Type<=1)&&(!CheckBU))          SetBU();
      if ((Type==1)||(Type==5))                       UpTrend();
      if ((Type==0)||(Type==4))                       DownTrend();
      //Comment("SL=", );
   }

   return(0);
  }
//-------Поиск входа для установки ордеров, удаление старых ордеров и установка новых
void UpTrend(){
     if((iOpen(NULL,PERIOD_H4,1) - iClose(NULL,PERIOD_H4,1) <= 0) &&
        (iOpen(NULL,PERIOD_H4,2) - iClose(NULL,PERIOD_H4,2) > 0)){
         Enter=iHigh(NULL,PERIOD_H4,1)+(Ask-Bid)+10*Point;
         SLmax=iLow(NULL,PERIOD_H4,1)-10*Point;
         if(IsTradeAllowed()){
            DellAllOrders();
            if(Enter-Ask>StopLevel-0.5*Point){
               OrderSend(Symbol(), OP_BUYSTOP, Lot, Enter, 0, SLmax, Enter+Profit, 0, 0,0, Green);}
         else Sleep(1000);
         }
      }
  }
void DownTrend(){
     if((iOpen(NULL,PERIOD_H4,1) - iClose(NULL,PERIOD_H4,1) >= 0) &&
        (iOpen(NULL,PERIOD_H4,2) - iClose(NULL,PERIOD_H4,2) < 0)){
         Enter=iLow(NULL,PERIOD_H4,1)-10*Point;
         SLmax=iHigh(NULL,PERIOD_H4,1)+(Ask-Bid)+10*Point;
         if(IsTradeAllowed()){
            DellAllOrders();
            if(Bid-Enter>StopLevel-0.5*Point){
               OrderSend(Symbol(), OP_SELLSTOP, Lot, Enter, 0, SLmax, Enter-Profit, 0, 0,0, Green);}
         else Sleep(1000);
         }
      }
  }

//-------Вычисление стопа и установка
void SetStop(){
      RefreshRates();
      b0=iLow(NULL,PERIOD_H4,0)-10*Point;
      s0=iHigh(NULL,PERIOD_H4,0)+(Ask-Bid)+10*Point;
      b1=iLow(NULL,PERIOD_H4,1)-10*Point;
      s1=iHigh(NULL,PERIOD_H4,1)+(Ask-Bid)+10*Point;
            
         if(Type==0){
            StopLoss=MathMax(b0,b1);
            if(Stop!=StopLoss) mod=OrderModify(Ticket,OpenPrise,StopLoss,OrderTakeProfit(),0,Red);
            else mod=true;
         }
         if(Type==1){
            StopLoss=MathMin(s0,s1);
            if(Stop!=StopLoss) mod=OrderModify(Ticket,OpenPrise,StopLoss,OrderTakeProfit(),0,Red);
            else mod=true;
         }
   }

//-------Вычисление бу и установка
void SetBU(){
      if(Type==0){
         EnterBU=OpenPrise+BUenter;
         StopLossBU=OpenPrise+BUstop;
         RefreshRates();
         if(Bid>=EnterBU){
            StopLoss=StopLossBU;
            OrderModify(Ticket,OpenPrise,StopLossBU,OrderTakeProfit(),0,Red);}
      }
      if(Type==1){
         EnterBU=OpenPrise-BUenter;
         StopLossBU=OpenPrise-BUstop;
         RefreshRates();
         if(Ask<=EnterBU){
            StopLoss=StopLossBU;
            OrderModify(Ticket,OpenPrise,StopLossBU,OrderTakeProfit(),0,Red);}
      }
}
   
//-------Удаление всех ордеров, открытых и отложенных
void DellAllOrders(){
      if(WorkOrders()){
      if(Type<=1)OrderClose(Ticket,OrderLots(),OrderClosePrice(),10);
      else OrderDelete(Ticket);}
  }
  
//-------Поиск ордеров
bool WorkOrders(){
      for (int i=OrdersTotal()-1;i>=0;i--){
      if (!OrderSelect(i,SELECT_BY_POS))  continue;
      if (OrderSymbol()!=Symbol())        continue;
      OpenPrise=OrderOpenPrice();
      Type     =OrderType();
      Ticket   =OrderTicket();
      Stop     =OrderStopLoss();
      CheckBU=false;
      if(Type==0 && Stop>OpenPrise) CheckBU=true;
      if(Type==1 && Stop<OpenPrise) CheckBU=true;
      return(true);}
  return(false);
  }
  
 
Попробую высказать и я свою точку зрения, ни в коем случае не навязываю !!!
Трелинги, стопы, без убытки и прочие премудрости абсолютно не нужны, это все
для новичков и выгоды ДЦ, советник, да и сама система должна быть как можно проще,
индикаторы, уровни и прочее абсолютно без разницы, главное должны быть
жесткие правила на SELL и BUY, система переворотная, то есть всегда в рынке !
Еще раз повторюсь, это моя точка зрения !
 
ALex2008 >>:

Попробовал как-то по человечески написать... исправить..

Добавил логическую переменную mod в проверку стопа..


проверь, mod добавил и проверку на ошибки

Файлы:
candylite.mq4  5 kb
 
AAE >>:
Попробую высказать и я свою точку зрения, ни в коем случае не навязываю !!!
Трелинги, стопы, без убытки и прочие премудрости абсолютно не нужны, это все
для новичков и выгоды ДЦ, советник, да и сама система должна быть как можно проще,
индикаторы, уровни и прочее абсолютно без разницы, главное должны быть
жесткие правила на SELL и BUY, система переворотная, то есть всегда в рынке !
Еще раз повторюсь, это моя точка зрения !

абсолютно не согласен с Вашей точкой зрения :)

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