Et faisons-en un "dessin animé" (multidevises) - page 12

 
Swan >> :

comme ça :

>> Merci.

 

Je m'interroge sur les majors en ce moment...pour mon expert...)

Livre, Euro, Chiff, Néo-Zélandais, Canadien, Australien... sont en position de préparation)

Vous pouvez essayer de vous connecter d'une manière ou d'une autre... faire une analyse générale... Si les directions des paires choisies coïncident, alors on parie...

 
ALex2008 >> :

Merci...

C'est comme ça que ça doit être.


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

Il peut fonctionner sans, il est plus fiable :)


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

Le StopLoss est calculé dans la fonction SetStop(). Il en sera de même avec

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

Le StopLoss est calculé dans la fonction SetStop(). Il en sera de même avec

Non, c'est différent... Ce n'est pas une vérification correcte, mais c'est censé vérifier la butée gauche... c'est censé être...

ou ceci.

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

StopLoss=MathMin(s0,s1);

C'est pourquoi le premier StopLoss est égal à -0


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

Et puis c'est l'une des valeurs ci-dessus... Si l'arrêt est exactement comme ça, il ne sera plus contrôlé...

Cygne >> :

Peut-être que ça marchera sans, c'est plus sûr comme ça :)

Corrigé).





 
Swan >> :

si (Type<=1) SetStop() ;

Et si vous l'envoyez en une fois... alors toutes les 4 heures il y aura de nouveaux paramètres pour le stop (b1,s1,b0,s0)... et il changera...

 

J'ai essayé de l'écrire d'une manière humaine... à réparer...

Ajout d' une variablelogique mod à la vérification de l'arrêt...

//+------------------------------------------------------------------+
//|                                                    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);
  }
  
 
Je vais essayer de faire valoir mon point de vue aussi, sans vouloir l'imposer en aucune façon ! !!
Je n'impose rien ! !! Les trailing stops, no-loss et autres sagesses sont absolument inutiles, c'est tout au bénéfice des débutants.
Tout cela est destiné aux débutants et le bénéfice de la société de courtage, du conseiller expert et du système lui-même doit être aussi simple que possible,
Les indicateurs, les niveaux, etc. ne font absolument aucune différence.
Le plus important est d'avoir des règles strictes pour VENDRE et ACHETER, le système est réversible, c'est-à-dire toujours sur le marché !
Encore une fois, c'est mon point de vue !
 
ALex2008 >> :

J'ai essayé de l'écrire d'une manière humaine... à réparer...

Ajout de la variable logique mod à la vérification de l'arrêt...


vérification, ajout de mods et vérification d'erreurs

Dossiers :
candylite.mq4  5 kb
 
AAE >> :
Je vais essayer de faire valoir mon point de vue aussi, sans vouloir l'imposer en aucune façon ! !!
Je n'impose rien ! !! Les trailing stops, no-loss et autres sagesses sont absolument inutiles, c'est tout au bénéfice des débutants.
Tout cela est destiné aux débutants et le bénéfice de la société de courtage, du conseiller expert et du système lui-même doit être aussi simple que possible,
Les indicateurs, les niveaux, etc. ne font absolument aucune différence.
Le plus important est d'avoir des règles strictes pour VENDRE et ACHETER, le système est réversible, c'est-à-dire toujours sur le marché !
Encore une fois, c'est mon point de vue !

Je ne suis pas du tout d'accord avec votre point de vue :)