[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 367

 
lottamer:


este modificador não foi escrito por mim.

Eu o preparei nas bibliotecas.

É por isso que eu também não consigo limpá-lo. O principal é que está 100% funcionando.

Mas porque o parâmetro dentro dele não está otimizado - essa é a questão.....

Não há erros básicos!

O resto do código funciona.

Colocar qualquer condição no algoritmo.

- compre

-modificar

- fechar

---------------------------

e tentar otimizar o parâmetro dentro da MODIFICAÇÃO do pedido - ou seja, parar e tomar

Bem, desde que funcione, e ainda mais se for 100%, então não há problema com isso. Por que devemos procurar erros nele? - Isso significa que o problema não é esse! - E se você estiver procurando por um erro, isso significa que você não está 100% certo. Portanto, o problema não está no código, mas em seus critérios de avaliação, pois eles confundem você também. (Você começou : )))) Estou apenas adicionando óleo a ele...)

O que é apresentado aqui - eu nem sei como chamá-lo ... Provavelmente - uma única ação inchada até o tamanho de uma função. Na maioria dos programas este tipo de aplicação não é ideal - a modificação em um bloco vai com outra coisa. - Embora possa haver diferentes condições de aplicação. Mas meu ponto é que não há nada para otimizar aqui... Como se trata apenas de uma ação.

 
lottamer:

Veja,

Se eu devolver tudo de volta agora, ou seja, remover parâmetros externos STOP e TAKE e escrever números dentro da função em vez deles, então a EA tem sido executada semana após semana por 10 semanas e mostra resultados claros.

E se eu alterar manualmente os parâmetros de parada e decolagem - tudo funcionará e dará resultados ligeiramente diferentes (é claro)

E agora por que, quando levo esses parâmetros para fora do modificador - o otimizador os considera insignificantes?

É exatamente isso que estou tentando lhe dizer - que o problema é mais provável em outro lugar, não nesta função. Portanto, você tem algo mais misturado. Talvez estes SL e TP sejam aplicados em alguns outros lugares que de alguma forma se sobrepõem ou algo mais. Só podemos adivinhar. - É por isso que você tem que olhar para o código inteiro. E ninguém pode ajudá-lo cegamente. - Não há feiticeiros aqui.

Você vê, você faz perguntas, mas não dá todas as informações necessárias para descobrir o motivo (escondendo razoavelmente seu know-how). - Como no exemplo com o plugue. - Mas como você pode ajudar neste caso? - A resposta é que você não pode. Toda a ajuda é inútil. E também é preciso muita energia.

 
Chiripaha:

Bem, se funcionar, e ainda mais se for 100%, então não há problema com isso. Então, por que você deveria procurar um erro nele? - Portanto, o problema não está nele! - Se você estiver procurando por um erro, isso significa que você não está 100% certo. Portanto, o problema não está no código, mas em seus critérios de avaliação, pois eles confundem você também. (Você começou : )))) Estou apenas adicionando óleo a ele...)

O que é apresentado aqui - eu nem sei como chamá-lo ... Provavelmente - uma única ação inchada até o tamanho de uma função. Na maioria dos programas este tipo de aplicação não é ideal - a modificação em um bloco vai com outra coisa. - Embora possa haver diferentes condições de aplicação. Mas meu ponto é que não há nada para otimizar aqui... Como se trata apenas de uma ação.

Estou olhando para ele, porque o mudamos SOMENTE e porque é onde estão os parâmetros otimizáveis.

como não há nada para otimizar? parar e tomar tamanhos são otimizados!

 
Chiripaha:

É exatamente isso que estou tentando lhe dizer - que o problema provavelmente está em outro lugar, não nesta função. Portanto, você tem algo mais confuso. Talvez estes SLs e TPs sejam aplicados em alguns outros lugares que de alguma forma se sobrepõem ou algo mais... Só podemos adivinhar. - É por isso que você tem que olhar para o código inteiro. E ninguém pode ajudá-lo cegamente. - Não há feiticeiros.

Você vê, você faz perguntas e deixa de fora algumas das informações necessárias para identificar a causa (escondendo sensatamente seu know-how). - Como no exemplo com os inlúdios. - Mas como você pode ajudar neste caso? - A resposta é que você não pode. Toda a ajuda é inútil. E também é preciso muita energia.

Eu entendo...

precisamos fazer uma pausa... e pensar...

olhar em....

e eu acho que sei onde...

 
lottamer:

Estou olhando para ele, porque o mudamos SOMENTE e porque é onde estão os parâmetros otimizáveis.

como não há nada para otimizar? parar e tomar tamanhos são otimizados!

: )))))) Para que eles são otimizados? para a modificação do pedido? - Isso não é o que você acabou de dizer.

Eles devem ser otimizados em relação ao programa, suas condições - que você está escondendo de forma confiável. Mas não pode ser otimizado em relação a uma única ação.

Neste caso, o desenvolvedor só tem que decidir estes pontos por ele mesmo. Todos nós passamos por isso, confie em mim. : )) Eu e outros colegas também. Não se pode pedir ajuda e se esconder. Então você tem que revelar - neste caso, torná-lo público, pois o fórum é público - seus cartões.
 
Chiripaha:

: )))))) De que forma eles são otimizados? Para modificar a ordem? - Isso não é o que você acabou de dizer.

Eles devem ser otimizados em relação ao programa, suas condições - que você está escondendo de forma confiável. Mas não se pode otimizá-lo em relação a uma única ação.

Neste caso, o desenvolvedor só tem que decidir estes pontos por ele mesmo. Todos nós passamos por isso, confie em mim. : )) Eu e outros colegas também. Não se pode pedir ajuda e escondê-la. Então você tem que revelar - neste caso, torná-lo público, pois o fórum é público - seus cartões.

Vou agora preparar todo o código e mostrar........
 

aqui está o código :

Par EURUSD

//+------------------------------------------------------------------+
//|                                                           33.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#include <WinUser32.mqh>
#include <b-Positions.mqh>

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+

extern  int  STOP = 100; 
extern  int  TAKE = 200;

double  Ma_1, Ma_2,  m2, m3; // m2 и m3 - это маркеры



//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  
Ma_1=iMA(NULL,PERIOD_M15,20, 0,MODE_SMA,PRICE_CLOSE,1) ;

Ma_2=iMA(NULL,PERIOD_M15,100,0,MODE_SMA,PRICE_CLOSE,1) ;





//=============================BUY_CONDITIONS=============================================
    

if (Ma_1>Ma_2 && m2==0)     {My_close();  My_buy ();  My_modify();  m2=1;   }  // закрыть если висят открытые позы   
                                                                                                   // и открыть новую
//=============================SELL_CONDITIONS=============================================
 
if (Ma_1<Ma_2 && m3==0)     {My_close();  My_sell ();  My_modify();  m3=1;  }    
 
//======================================

if  ( OrdersTotal()==0 && (m2==1 || m3==1)) {m2=0; m3=0;}  // обнуляет маркеры при закрытии позиций,
                                                           // что дает возможность открывать снова
//==============переход в безубыток ========================
   
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
   
if  (OrderProfit()>0.5)  {My_modify_close_zero ();}


return(0);
  }

//============================функция  ПРОДАТЬ==============================================

int My_sell()
{
    OrderSend (Symbol( ), OP_SELL,  0.01 ,Bid, 0, 0, 0, NULL, 0, 0, CLR_NONE);

}
return;

///==================================КУПИТЬ==========================================
int My_buy ()
{
     OrderSend (Symbol( ), OP_BUY, 0.01 ,Ask, 0, 0, 0, NULL, 0, 0, CLR_NONE);
}
return;


//+---------------------МОДИФИЦИРОВАТЬ сделку сразу по открытии---------------------------------------------+


int My_modify()
 {
   bool   result;
   double take_profit,stop_loss,point;
   int    cmd,total,error;
//----
   total=OrdersTotal();
   point=MarketInfo(Symbol(),MODE_POINT);
//----
//   for(int i=0; i<total; i++)
//     {
      if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
        {
         //---- print selected order
         OrderPrint();
         cmd=OrderType();
         //---- buy or sell orders are considered
         if(cmd==OP_BUY || cmd==OP_SELL)
           {
            //---- modify first market order
            while(true)
              {
               if(cmd==OP_BUY) stop_loss=OrderOpenPrice()-STOP*point;
               else            stop_loss=OrderOpenPrice()+STOP*point;
               
                if(cmd==OP_BUY) take_profit=OrderOpenPrice()+TAKE*point;
                           else take_profit=OrderOpenPrice()-TAKE*point;
               
               
               result=OrderModify(OrderTicket(),0,stop_loss, take_profit,0,CLR_NONE);
               if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error); }
               else error=0;
               if(error==135) RefreshRates();
               else break;
              }
             //---- print modified order (it still selected after modify)
             OrderPrint();
//            break;
           }
        }
      else { Print( "Error when order select ", GetLastError()); }
//     }

   return(0);
  }
  
  
//==============================выставить стопы в безубыток============================================================
int My_modify_close_zero ()
{
   bool   result;
   double stop_loss,point;
   int    cmd,total,error;
//----
   total=OrdersTotal();
   point=MarketInfo(Symbol(),MODE_POINT);
//----
//   for(int i=0; i<total; i++)
//     {
      if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
        {
         //---- print selected order
         OrderPrint();
         cmd=OrderType();
         
         //---- buy or sell orders are considered
         if(cmd==OP_BUY || cmd==OP_SELL)
           {
            //---- modify first market order
            while(true)
              {
               if(cmd==OP_BUY) stop_loss=OrderOpenPrice();
               else            stop_loss=OrderOpenPrice();
               
               result=OrderModify(OrderTicket(),OrderOpenPrice(),stop_loss,OrderTakeProfit(),0,CLR_NONE);
               if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error); }
               else error=0;
               if(error==135) RefreshRates();
               else break;
              }
             //---- print modified order (it still selected after modify)
             OrderPrint();
//             break;
           }
        }
      else { Print( "Error when order select ", GetLastError()); }
//     }
//----
   return(0);
  }

  
//=================ЗАКРЫТЬ СДЕЛКУ=======================================================
int My_close()
  {
   bool   result;
   double price;
   int    cmd,error;
//----
   if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
     {
      cmd=OrderType();
      //---- first order is buy or sell
      if(cmd==OP_BUY || cmd==OP_SELL)
        {
         while(true)
           {
            if(cmd==OP_BUY) price=Bid;
            else            price=Ask;
            result=OrderClose(OrderTicket(),OrderLots(),price,3,CLR_NONE);
            if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error); }
            else error=0;
            if(error==135) RefreshRates();
            else break;
           }
        }
     }
   else Print( "Error when order select ", GetLastError());
//----
   return(0);
  }
 
lottamer:

aqui está o código :

Par EURUSD

b-Positions.mqh anexá-lo - caso contrário você não será capaz de executá-lo - você não verá como ele funciona.
 
Chiripaha:
b-Positions.mqh anexar - caso contrário você não poderá executá-lo - você não poderá vê-lo funcionando.

Arquivos anexados:
b-positions.mqh  90 kb
 
lottamer:
Tenho uma pergunta - por que você precisa deste arquivo como um plug-in, se você tem todas as funções necessárias no próprio Expert Advisor? Você está planejando fazer outra coisa?
Razão: