[ARCHIVE!] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 4. - 페이지 572

 
오 좋아요, 모두 감사합니다!
 
젠장, 조건((작은 조언자처럼.
 

내가 Toko를 벗지 않았다는 것은 여전히 작동하지 않습니다 (((

가격이 한 방향으로 가면 열리고 가격이 반전되면 열리지 않는 것으로 나타났습니다 ((

파일:
trudnyaga.mq4  5 kb
 
Frostr :
포지션을 여는 조건을 작성하는 데 도움이 됩니다.

계획된 왕자님에 따라 거래를 시작하기 위한 추가 조건을 작성할 수 없습니다.

TP 또는 SL에서 임의의 위치를 닫은 후 반대 위치로 다시 열 필요가 있습니다.

예: 매도 포지션이 마감된 경우 SL이 다시 매도 포지션을 개설하고 매수합니다.

다음은 EA의 2가지 조건입니다.

구매 조건

만약 (구매)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); elseTP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); elseSL=0;
if(NumberOfPositions(Symbol(),OP_BUY,Magic)<MaxOrders)OPENORDER("구매");
}

판매 조건

만약 (판매)
{
if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); elseTP=0;
if (스톱로스!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits); elseSL=0;
if(NumberOfPositions(Symbol(),OP_SELL,Magic)<MaxOrders)OPENORDER("판매");
}

여기에 관련된 사람은 추가 조건을 작성하는 데 도움이됩니다.

죄송하지만 첨부파일에는 소스가 없으나 컴파일된 파일이 있습니다. 당신은 그것을 볼 수 없습니다. 확장자가 .mq4인 파일 업로드
 
수정한 것 같다
파일:
 
그렇지 않음)) 여기에 하나가 있습니다. 이것은 더 명확하다
파일:
sellbuy_2.mq4  3 kb
 
두컨드 어드바이저를 보면 아이디어가 떠오를지도.....
 
Frostr :
두컨드 어드바이저를 보면 아이디어가 떠오를지도.....

나는 이렇게 얻었다. 노력하다
 //+------------------------------------------------------------------+
extern int     stoploss   = 0 ,           // уровень выставления SL, если 0, то SL не выставляется
              takeprofit = 0 ,           // уровень выставления TP, если 0, то TP не выставляется
              Magic      = 123456 ;     // уникальный номер ордера
extern double Lot        = 0.1 ;         // объем ордера
extern int     slippage   = 3 ;           // Максимально допустимое отклонение цены для рыночных ордеров
extern int     MaxOrders  = 3 ;           // Максимально допустимое количество ордеров BUY или SELL
extern int     CycleCount = 5 ;           // количество попыток открытия ордера
//+------------------------------------------------------------------+
double SL,TP;
int     Count,Total,LastTotal;
string ord;
//+------------------------------------------------------------------+
int start()
   {
   Total=fTotal();
   if (Total==LastTotal&&LastTotal!= 0 ) return ( 0 );
   int Buy,Sell;
   if (Count== 0 )
      {
       MathSrand ( TimeLocal ()); 
       if ( NormalizeDouble ( MathMod ( MathRand (), 2 ), 0 )== 0 )ord= "Buy" ; else ord= "Sell" ;
   } 
   if (ord== "Buy" )OrdCount( "Buy" );
   if (ord== "Sell" )OrdCount( "Sell" );
   if (Count>=MaxOrders) return ( 0 );
   if (ord== "Buy" )
      {
       if (takeprofit!= 0 )TP= NormalizeDouble (Ask+takeprofit* Point , Digits ); else TP= 0 ;
       if (stoploss!= 0 )SL= NormalizeDouble (Ask-stoploss* Point , Digits ); else SL= 0 ;
      OPENORDER( "Buy" );
       if (takeprofit!= 0 )TP= NormalizeDouble (Bid-takeprofit* Point , Digits ); else TP= 0 ;
       if (stoploss!= 0 )SL= NormalizeDouble (Bid+stoploss* Point , Digits ); else SL= 0 ;
      OPENORDER( "Sell" );
   }
   if (ord== "Sell" )
      {
       if (takeprofit!= 0 )TP= NormalizeDouble (Bid-takeprofit* Point , Digits ); else TP= 0 ;
       if (stoploss!= 0 )SL= NormalizeDouble (Bid+stoploss* Point , Digits ); else SL= 0 ;
      OPENORDER( "Sell" );
       if (takeprofit!= 0 )TP= NormalizeDouble (Ask+takeprofit* Point , Digits ); else TP= 0 ;
       if (stoploss!= 0 )SL= NormalizeDouble (Ask-stoploss* Point , Digits ); else SL= 0 ;
      OPENORDER( "Buy" );
   }
   LastTotal=fTotal();
   return ( 0 );
}
//+------------------------------------------------------------------+
void OPENORDER( string ord)
   {
   int error,err;
   while ( true )
      { 
      error=- 1 ;
       if (ord== "Buy" )error= OrderSend ( Symbol (),OP_BUY, Lot, NormalizeDouble (Ask, Digits ),slippage,SL,TP, "BUY" ,Magic, 0 ,Blue);
       if (ord== "Sell" )error= OrderSend ( Symbol (),OP_SELL,Lot, NormalizeDouble (Bid, Digits ),slippage,SL,TP, "SELL" ,Magic, 0 ,Red);
       if (error==- 1 ) //неудачная покупка OK
         { 
         ShowERROR();err++; Sleep ( 2000 );RefreshRates();
      }
       if (err>=CycleCount) break ;
   }
   return ;
} 
//+------------------------------------------------------------------+
void ShowERROR()
   {
   int err= GetLastError ();
   switch (err)
      { 
       case 1    : return ;
       case 2    : Alert ( "Нет связи с торговым сервером " , Symbol ()); return ;
       case 3    : Alert ( "Error неправильные параметры " , Symbol ()); return ;
       case 130 : Alert ( "Error близкие стопы Ticket " , Symbol ()); return ;
       case 134 : Alert ( "Недостаточно денег " , Symbol ()); return ;
       case 146 : Alert ( "Error Подсистема торговли занята " , Symbol ()); return ;
       case 129 : Alert ( "Error Неправильная цена " , Symbol ()); return ;
       case 131 : Alert ( "Error Неправильный объем " , Symbol ()); return ;
       case 4200 : Alert ( "Error Объект уже существует " , Symbol ()); return ;
       default   : Alert ( "Error " ,err, " " , Symbol ()); return ;
   }
}
//+------------------------------------------------------------------+
int fTotal()
   {
   int Tot= OrdersTotal ();
   int BuyCount= 0 ,SellCount= 0 ;
   if (Tot> 0 )
      {
       for ( int i= 0 ;i< OrdersTotal ();i++)
         {
         if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== true )
            {
             if (OrderSymbol()== Symbol ()&&(Magic== 0 ||OrderMagicNumber()==Magic))
               {
               switch (OrderType())
                  {
                   case OP_BUY :BuyCount++; break ;
                   case OP_SELL:SellCount++; break ;
               }
            }
         }
      }
   }
   return (BuyCount+SellCount);
}
//+------------------------------------------------------------------+
int OrdCount( string ord)
   {
   int Type;Count= 0 ;
   if (ord== "Buy" )Type=OP_BUY;
   if (ord== "Sell" )Type=OP_SELL;
   for ( int i= 0 ;i< OrdersTotal ();i++)
      {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== true )
         {
         if (OrderSymbol()== Symbol ())
            {
             if (OrderType()==Type)
               {
               if (Magic== 0 ||OrderMagicNumber()==Magic)Count++;
            }
         }
      }
   }
   return (Count);
}
//+------------------------------------------------------------------+
 
그는 나를 위해 500개의 주문을 열거나 1000개를 줄이는 방법은 무엇입니까?
 
Frostr :
그는 나를 위해 500개의 주문을 엽니다. 아니면 1000개를 줄이는 방법은 무엇입니까?

그는 누구인가?