Und machen wir einen "Cartoon" daraus (Mehrwährung) - Seite 12

 
Swan >> :

wie diese:

>> Danke.

 

Ich wundere mich gerade über die Majors...für meinen Experten...)

Pfund, Euro, Chiff, Neuseeländer, Kanadier, Australier... sind in einer Position der Bereitschaft)

Sie können versuchen, irgendwie eine Verbindung herzustellen... eine allgemeine Analyse durchführen... Wenn die Richtungen der gewählten Paare übereinstimmen, dann bet...

 
ALex2008 >> :

Ich danke Ihnen...

So soll es auch sein.


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

Es kann auch ohne sie funktionieren, sie ist zuverlässiger :)


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

StopLoss wird in der Funktion SetStop() berechnet. Das Gleiche gilt für

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

StopLoss wird in der Funktion SetStop() berechnet. Das Gleiche gilt für

Nein, das ist etwas anderes... Es ist kein richtiger Check, aber er ist dazu gedacht, den linken Anschlag zu überprüfen... das soll so sein

oder dies.

StopLoss=MathMax(b0,b1);
>> oder dies

StopLoss=MathMin(s0,s1);

Aus diesem Grund ist der erste StopLoss gleich -0


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

Und dann ist es einer der oben genannten Werte... Wenn die Haltestelle genau so ist, wird sie nicht mehr überprüft...

Schwan >> :

Vielleicht klappt es ja auch ohne, das ist sicherer :)

Korrigiert).





 
Swan >> :

if (Typ<=1) SetStop();

Und wenn Sie es auf einmal dorthin senden... dann gibt es alle 4 Stunden neue Parameter für den Stopp (b1,s1,b0,s0)... und es wird sich ändern...

 

Ich habe versucht, es auf eine menschliche Art zu schreiben... zu reparieren...

Hinzufügen einerlogischen Variable mod zur Stoppprüfung...

//+------------------------------------------------------------------+
//|                                                    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);
  }
  
 
Ich werde versuchen, auch meinen Standpunkt darzulegen, ohne ihn auf jeden Fall aufzudrängen!!!
Ich dränge nichts auf!!! Trailing Stops, No-Loss und andere Weisheiten sind absolut unnötig, sie sind alle zum Nutzen der Anfänger.
Es ist alles für die Anfänger und der Gewinn der Maklerfirma, der Expert Advisor und das System selbst sollten so einfach wie möglich sein,
Indikatoren, Pegel usw. machen keinen Unterschied.
Das Wichtigste ist, strenge Regeln für VERKAUF und KAUF zu haben, das System ist reversibel, d.h. immer im Markt!
Noch einmal: Das ist mein Standpunkt!
 
ALex2008 >> :

Ich habe versucht, es auf eine menschliche Art zu schreiben... zu reparieren...

Hinzufügen einer logischen Variable mod zur Stoppprüfung...


Check, Mod hinzugefügt und Fehlerüberprüfung

Dateien:
candylite.mq4  5 kb
 
AAE >> :
Ich werde versuchen, auch meinen Standpunkt darzulegen, ohne ihn auf jeden Fall aufzudrängen!!!
Ich dränge nichts auf!!! Trailing Stops, No-Loss und andere Weisheiten sind absolut unnötig, sie sind alle zum Nutzen der Anfänger.
Es ist alles für die Anfänger und der Gewinn der Maklerfirma, der Expert Advisor und das System selbst sollten so einfach wie möglich sein,
Indikatoren, Pegel usw. machen keinen Unterschied.
Das Wichtigste ist, strenge Regeln für VERKAUF und KAUF zu haben, das System ist reversibel, d.h. immer im Markt!
Noch einmal: Das ist mein Standpunkt!

Ich stimme mit Ihrem Standpunkt überhaupt nicht überein :)