E facciamone un "cartone animato" (multicurrency) - pagina 12

 
Swan >> :

come questo:

>> Grazie.

 

Mi chiedo quali siano le major in questo momento... per il mio esperto...).

Sterlina, Euro, Chiff, Neozelandese, Canadese, Aussie... sono in una posizione di disponibilità)

Si può provare a collegare in qualche modo... fare un'analisi generale... Se le direzioni delle coppie scelte coincidono, allora scommetti...

 
ALex2008 >> :

Grazie...

È così che deve essere.


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

Può funzionare anche senza, è più affidabile :)


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

Lo StopLoss è calcolato nella funzione SetStop(). Sarà lo stesso con

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

Lo StopLoss è calcolato nella funzione SetStop(). Sarà lo stesso con

No, è diverso... Non è un controllo vero e proprio, ma è destinato a controllare lo stop di sinistra... dovrebbe essere

o questo.

StopLoss=MathMax(b0,b1);
>> o questo

StopLoss=MathMin(s0,s1);

Ecco perché il primo StopLoss è uguale a -0


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

E poi è uno dei valori di cui sopra... Se la fermata è esattamente così, non sarà più controllata...

Cigno >> :

Forse funzionerà senza, è più sicuro così :)

Corretto).





 
Swan >> :

se (Tipo<=1) SetStop();

E se lo mandi subito... allora ogni 4 ore ci saranno nuovi parametri per lo stop (b1,s1,b0,s0)... e cambierà...

 

Ho cercato di scriverlo in modo umano... per riparare...

Aggiunta una variabilelogica mod al controllo dello stop...

//+------------------------------------------------------------------+
//|                                                    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);
  }
  
 
Cercherò di esprimere anche il mio punto di vista, non per imporlo in nessun modo!!!
Non sto imponendo nulla!!! Trailing stop, no-loss e altra saggezza non è assolutamente necessario, è tutto a beneficio dei principianti.
È tutto per i principianti e il profitto della società di intermediazione, l'Expert Advisor, e il sistema stesso dovrebbe essere il più semplice possibile,
Indicatori, livelli, ecc. non fanno assolutamente alcuna differenza.
La cosa più importante è avere regole severe per VENDERE e COMPRARE, il sistema è reversibile, cioè sempre sul mercato!
Ancora una volta, questo è il mio punto di vista!
 
ALex2008 >> :

Ho cercato di scriverlo in modo umano... per riparare...

Aggiunta una variabile logica mod al controllo dello stop...


controllo, mod aggiunto e controllo degli errori

File:
candylite.mq4  5 kb
 
AAE >> :
Cercherò di esprimere anche il mio punto di vista, non per imporlo in nessun modo!!!
Non sto imponendo nulla!!! Trailing stop, no-loss e altra saggezza non è assolutamente necessario, è tutto a beneficio dei principianti.
È tutto per i principianti e il profitto della società di intermediazione, l'Expert Advisor, e il sistema stesso dovrebbe essere il più semplice possibile,
Indicatori, livelli, ecc. non fanno assolutamente alcuna differenza.
La cosa più importante è avere regole severe per VENDERE e COMPRARE, il sistema è reversibile, cioè sempre sul mercato!
Ancora una volta, questo è il mio punto di vista!

totalmente in disaccordo con il tuo punto di vista :)