precisam de conselhos de um profissional de arrasto que controla duas posições independentemente uma da outra, como pode ser implementado? - página 8

 
charony:

Sinto pena de você.

Igualmente )

ZS: sete páginas de arrasto, é assim que se faz).

 
Sim, corte-o duas vezes e ainda é curto
 

)))).

ZS: não há nenhum teste no testador.

1. Colocar o Expert Advisor no quadro com posições abertas

2. O Expert Advisor marca cada posição com sua própria linha.

3. Nas propriedades da linha (a linha "Descrição"), defina a linha requerida para a ordem requerida em pontos (não mude o nome da linha, ela é igual ao bilhete do pedido)

4. Observe como funciona a rede de arrasto))))

5. Não pergunte como podemos lidar com aquilo com o qual não podemos lidar.

Arquivos anexados:
 
//+-----------------------------trailingstop----------------------------------------------
for(int i=OrdersTotal()-1;i>=0;i--)
   {
      if(OrderSelect(i,SELECT_BY_POS)==true)
      {
         {
            int cmd=OrderType();
            if(cmd==OP_BUY)
            {
               if(ObjectFind(DoubleToStr(OrderTicket(),0))<0)
               {
                  ObjectCreateTrend(false,DoubleToStr(OrderTicket(),0),OBJ_HLINE,0,0,OrderOpenPrice(),0,0,Blue,0,0,"",0);
               }
               else
               {
                  if(ObjectDescription(DoubleToStr(OrderTicket(),0))!="30")//if(TrailingStop>0)  
                  {                 
                     if(Bid-OrderOpenPrice()>Point*StrToDouble(ObjectDescription(DoubleToStr(OrderTicket(),0))))
                     {
                        if(OrderStopLoss()<Bid-Point*StrToDouble(ObjectDescription(DoubleToStr(OrderTicket(),0))))
                        {
                           OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*StrToDouble(ObjectDescription(DoubleToStr(OrderTicket(),0))),OrderTakeProfit(),0,Green);
                        }
                     }
                  }
               }
            }
            if(cmd==OP_SELL)
            {
               if(ObjectFind(DoubleToStr(OrderTicket(),0))<0)
               {
                  ObjectCreateTrend(false,DoubleToStr(OrderTicket(),0),OBJ_HLINE,0,0,OrderOpenPrice(),0,0,Red,0,0,"",0);
               }
               else
               {
                  if(ObjectDescription(DoubleToStr(OrderTicket(),0))!="30")//TrailingStop>0)  
                  {                 
                     if((OrderOpenPrice()-Ask)>(Point*StrToDouble(ObjectDescription(DoubleToStr(OrderTicket(),0)))))
                     {
                        if((OrderStopLoss()>(Ask+Point*StrToDouble(ObjectDescription(DoubleToStr(OrderTicket(),0))))) || (OrderStopLoss()==0))
                        {
                           OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*StrToDouble(ObjectDescription(DoubleToStr(OrderTicket(),0))),OrderTakeProfit(),0,Red);
                        }
                     }
                  }
               }
            }
         }
      }
   }
   return(0);
  }
//+------------------------------------------------------------------+
void ObjectCreateTrend(bool RayLines,string iObjectName,int Type,int iWindow,int X1Time,double Y1Price,int X2Time,double Y2Price,color iColor,int Code,int sound,string coment,int angle)
{
        if (ObjectFind(iObjectName)<0) {
                ObjectCreate(iObjectName,Type,iWindow,0,0);
                ObjectSet(iObjectName,OBJPROP_COLOR,iColor);
         ObjectSet(iObjectName,OBJPROP_RAY,RayLines);
        }
        if (X1Time!=0)
           ObjectSet(iObjectName,OBJPROP_TIME1,X1Time);
        ObjectSet(iObjectName,OBJPROP_PRICE1,Y1Price);
        if (X2Time!=0)
           ObjectSet(iObjectName,OBJPROP_TIME2,X2Time);
        if (Y2Price!=0)
           ObjectSet(iObjectName,OBJPROP_PRICE2,Y2Price);
        if (Code!=0)
           ObjectSet(iObjectName,OBJPROP_ARROWCODE,Code);
        if (coment!="")
           ObjectSetText(iObjectName,coment,10,"Times New Roman",iColor);
        if (angle!=0)
           ObjectSet(iObjectName,OBJPROP_ANGLE,angle);
        //ObjectSet(iObjectName,OBJPROP_FIBOLEVELS,7);
        //ObjectSet(iObjectName,OBJPROP_FIRSTLEVEL+0,0);
        //ObjectSet(iObjectName,OBJPROP_FIRSTLEVEL+1,0.5);
        //ObjectSet(iObjectName,OBJPROP_FIRSTLEVEL+2,1);
}


 //-------------------------------------tral-------------------------------------------------
  
//+-----------------------------trailingstop end----------------------------------------------+
   
такое вставил
 


conseguiu isto
 

você coloca na merda - você recebe merda, então quando você cria um objeto, faz a descrição "30" em vez de verificar se a descrição é igual a "30".

ZS: poderia ter perguntado como fazer a descrição do objeto igual a "30" de uma só vez.

 
if(ObjectDescription(DoubleToStr(OrderTicket(),0))!="30")/

É isso que você acha que deveria ter resultado na substituição de "" por "30"?

ZS: esta linha impediu que a rede de arrasto começasse quando a descrição estava vazia.

 
sanyooooook:

É isso que você acha que deveria ter resultado na substituição de "" por "30"?

ZS: esta linha impediu que a rede de arrasto começasse quando a descrição estava vazia.

Você Udmurts certamente não conhece o velho provérbio de Kholya - "Não desperdice a força de um kume..." :))
 
granit77:
Vocês Udmurts certamente não conhecem o velho provérbio Khohlian - "Não desperdice a força de um kume..." :))
Eu ouvi pela primeira vez, provavelmente é "como uma ervilha contra a parede", ou "como um peixe contra o gelo", ou "ensinar aos tolos é como curar os mortos" )
 
sanyooooook:

Se você colocar merda, você recebe merda, então faça a descrição "30" ao criar o objeto em vez de verificar se a descrição é igual a "30".

ZS: poderia perguntar como tornar a descrição do objeto imediatamente igual a "30".


Tenho medo de perguntar, você é um cara tão bravo

NasPropriedades da linha (linha "Descrição"), nos parágrafos, definir a rede de arrasto desejada

ObjectDescription é uma propriedade, coloque-a lá

Onde você quer inseri-lo? 30 pontos de arrasto