Y hagamos una "caricatura" de ello (multidivisa) - página 12

 
Swan >> :

así:

>> Gracias.

 

Me pregunto por los mayores ahora mismo... por mi experto...)

La libra, el euro, el chiff, el neozelandés, el canadiense, el australiano... están en una posición de disponibilidad)

Puedes intentar conectar de alguna manera... hacer un análisis general... Si las direcciones de los pares elegidos coinciden, entonces ap...

 
ALex2008 >> :

Gracias...

Así es como debe ser.


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

Puede funcionar sin él, es más fiable :)


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

El StopLoss se calcula en la función SetStop(). Lo mismo ocurrirá con

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

El StopLoss se calcula en la función SetStop(). Lo mismo ocurrirá con

No, eso es diferente... No es una comprobación propiamente dicha, pero está pensada para comprobar el tope izquierdo... se supone que es

o esto.

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

StopLoss=MathMin(s0,s1);

Por eso, la primera vez StopLoss es igual a -0


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

Y entonces es uno de los valores de arriba... Si la parada es exactamente así, no se comprobará de nuevo...

Cisne >> :

Quizás funcione sin ella, es más seguro así :)

Corregido).





 
Swan >> :

si (Tipo<=1) SetStop();

Y si lo envías de una vez... entonces cada 4 horas habrá nuevos parámetros para la parada (b1,s1,b0,s0)... y cambiará...

 

Intenté escribirlo de forma humana... para arreglar...

Se ha añadido una variable lógica mod a la comprobación de la 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);
  }
  
 
Yo también intentaré dar mi punto de vista, ¡¡¡no imponerlo de ninguna manera!!!
No estoy imponiendo nada!!! Los trailing stops, no-loss y demás sabiduría es absolutamente innecesaria, todo es en beneficio de los principiantes.
Todo es para los principiantes y el beneficio de la empresa de corretaje, el Asesor Experto, y el sistema en sí debe ser lo más simple posible,
Los indicadores, los niveles, etc. no suponen ninguna diferencia.
Lo más importante es tener reglas estrictas de VENTA y COMPRA, el sistema es reversible, es decir, ¡siempre en el mercado!
Una vez más, este es mi punto de vista.
 
ALex2008 >> :

Intenté escribirlo de forma humana... para arreglar...

Se ha añadido una variable lógica mod a la comprobación de la parada...


comprobación, mod añadido y comprobación de errores

Archivos adjuntos:
candylite.mq4  5 kb
 
AAE >> :
Yo también intentaré dar mi punto de vista, ¡¡¡no imponerlo de ninguna manera!!!
No estoy imponiendo nada!!! Los trailing stops, no-loss y demás sabiduría es absolutamente innecesaria, todo es en beneficio de los principiantes.
Todo es para los principiantes y el beneficio de la empresa de corretaje, el Asesor Experto, y el sistema en sí debe ser lo más simple posible,
Los indicadores, los niveles, etc. no suponen ninguna diferencia.
Lo más importante es tener reglas estrictas de VENTA y COMPRA, el sistema es reversible, es decir, ¡siempre en el mercado!
Una vez más, este es mi punto de vista.

totalmente en desacuerdo con su punto de vista :)

Razón de la queja: