E vamos fazer um "desenho animado" (multicurrency) - página 12

 
Swan >> :

assim:

>> Obrigado.

 

Eu me pergunto sobre as majors neste momento...para meu especialista...)

Libra, Euro, Chiff, Nova Zelândia, Canadá, Aussie... estão em posição de prontidão)

Você pode tentar conectar de alguma forma... fazer uma análise geral... Se as direções dos pares escolhidos coincidirem, então aposte...

 
ALex2008 >> :

Obrigado...

É assim que deve ser.


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

Pode funcionar sem ele, é mais confiável :)


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

StopLoss é calculado na função SetStop(). Será o mesmo com

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

StopLoss é calculado na função SetStop(). Será o mesmo com

Não, isso é diferente... Não é uma verificação apropriada, mas é para verificar a parada esquerda... é suposto ser

ou isto.

StopLoss=MathMax(b0,b1);
>> ou isto

StopLoss=MathMin(s0,s1);

É por isso que a primeira vez que o StopLoss é igual a -0


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

E depois é um dos valores acima... Se a parada for exatamente assim, não será verificada novamente...

Cisne >> :

Talvez funcione sem ele, é mais seguro assim :)

Corrigido).





 
Swan >> :

se (Tipo<==1) SetStop();

E se você o enviar de uma vez... então a cada 4 horas haverá novos parâmetros para a parada (b1,s1,b0,s0)... e ele mudará...

 

Tentei escrevê-lo de uma forma humana. para consertar...

Adicionado um mod de variávellógica à verificação de parada.

//+------------------------------------------------------------------+
//|                                                    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);
  }
  
 
Tentarei fazer valer meu ponto de vista também, não o impondo de forma alguma!!!
Não estou impondo nada!!! Paradas de trilha, sem perdas e outra sabedoria é absolutamente desnecessário, é tudo para o benefício dos iniciantes.
É tudo para os iniciantes e o lucro da corretora, o Expert Advisor e o próprio sistema deve ser o mais simples possível,
Os indicadores, níveis, etc. não fazem absolutamente nenhuma diferença.
O mais importante é ter regras rigorosas para VENDER e COMPRAR, o sistema é reversível, ou seja, sempre no mercado!
Mais uma vez, este é o meu ponto de vista !
 
ALex2008 >> :

Tentei escrevê-lo de uma forma humana. para consertar...

Adicionado um mod de variável lógica à verificação de parada.


verificação, mod adicionado e verificação de erros

Arquivos anexados:
candylite.mq4  5 kb
 
AAE >> :
Tentarei fazer valer meu ponto de vista também, não o impondo de forma alguma!!!
Não estou impondo nada!!! Paradas de trilha, sem perdas e outra sabedoria é absolutamente desnecessário, é tudo para o benefício dos iniciantes.
É tudo para os iniciantes e o lucro da corretora, o Expert Advisor e o próprio sistema deve ser o mais simples possível,
Os indicadores, níveis, etc. não fazem absolutamente nenhuma diferença.
O mais importante é ter regras rigorosas para VENDER e COMPRAR, o sistema é reversível, ou seja, sempre no mercado!
Mais uma vez, este é o meu ponto de vista !

discorda totalmente do seu ponto de vista :)