[아카이브!] 어드바이저를 무료로 써드립니다 - 페이지 21

 
Vinin >> :

가져가는 것이 좋습니다. 부서진 것과 아직 알려지지 않은 것의 혼합물. 끔찍한 일이 발생합니다. 읽을 수 있는 형태로 번역할 수 있지만.


고문은 Bai 만 작동합니다.

그가 Sell에서도 보류 중인 주문을 처리할 수 있도록 하십시오.


작업의 본질 : 현재 가격에서 50ps의 거리에서 BuyStop 및 Buy Limit가 TP 100으로 설정됩니다.

하단에서 50ps 간격으로 2개 주문, 상단에서 2개 주문.

EA는 양방향으로 항상 최소 2개의 보류 중인 주문이 있는 방식으로 작동합니다.


미리 감사드립니다 :)
#property copyright "Slobodyan Oleg"
#property link      "http://www.metaquotes.net"

extern int Orders = 2 ;
extern double Lots = 0.01 ;
extern double StepLevel = 50.0 ;
extern int StopLoss = 3000 ;
extern int Profit = 100 ;
double gd_104 = 0.0 ;

int CheckBS ( ) {
   double l_ord_open_price_12 ;
   double ld_20 = 0 ;
   int l_count_8 = 0 ;
   int l_ord_total_0 = OrdersTotal ( ) ;
   for ( int l_pos_4 = 0 ; l_pos_4 < l_ord_total_0 ; l_pos_4 + + ) {
      if ( OrderSelect ( l_pos_4 , SELECT_BY_POS , MODE_TRADES ) = = TRUE ) {
         if ( OrderSymbol ( ) = = Symbol ( ) & & OrderType ( ) = = OP_BUY | | OrderType ( ) = = OP_BUYSTOP & & OrderMagicNumber ( ) = = 1 ) {
            if ( OrderOpenPrice ( ) - Ask > ld_20 & & OrderOpenPrice ( ) - Ask > 0.0 ) {
               ld_20 = OrderOpenPrice ( ) - Ask ;
               l_ord_open_price_12 = OrderOpenPrice ( ) ;
               l_count_8 + + ;
            }
         }
      }
   }
   if ( l_count_8 = = 0 ) {
      l_ord_open_price_12 = NormalizeDouble ( Bid - StepLevel * Point , Digits ) ;
      OrderSend ( Symbol ( ) , OP_SELLSTOP , Lots , l_ord_open_price_12 , 3 , l_ord_open_price_12 - StopLoss * Point - 2.0 * gd_104 , l_ord_open_price_12 + Profit * Point + gd_104 , "" , 1 , 0 , Navy ) ;
   }
   if ( l_count_8 < Orders & & l_count_8 ! = 0 ) {
      l_ord_open_price_12 = NormalizeDouble ( l_ord_open_price_12 + StepLevel * Point , Digits ) ;
      OrderSend ( Symbol ( ) , OP_SELLSTOP , Lots , l_ord_open_price_12 , 3 , l_ord_open_price_12 - StopLoss * Point - 2.0 * gd_104 , l_ord_open_price_12 + Profit * Point + gd_104 , "" , 1 , 0 , Navy ) ;
   }
   return ( 1 ) ;
}

int CheckBL ( ) {
   double l_ord_open_price_12 ;
   double ld_20 = 0 ;
   int l_count_8 = 0 ;
   int l_ord_total_0 = OrdersTotal ( ) ;
   for ( int l_pos_4 = 0 ; l_pos_4 < l_ord_total_0 ; l_pos_4 + + ) {
      if ( OrderSelect ( l_pos_4 , SELECT_BY_POS , MODE_TRADES ) = = TRUE ) {
         if ( OrderSymbol ( ) = = Symbol ( ) & & OrderType ( ) = = OP_SELL | | OrderType ( ) = = OP_SELLLIMIT & & OrderMagicNumber ( ) = = 2 ) {
            if ( Bid - OrderOpenPrice ( ) > ld_20 & & Bid - OrderOpenPrice ( ) > 0.0 ) {
               ld_20 = Bid - OrderOpenPrice ( ) ;
               l_ord_open_price_12 = OrderOpenPrice ( ) ;
               l_count_8 + + ;
            }
         }
      }
   }
   if ( l_count_8 = = 0 ) {
      l_ord_open_price_12 = NormalizeDouble ( Ask - StepLevel * Point , Digits ) ;
      OrderSend ( Symbol ( ) , OP_BUYLIMIT , Lots , l_ord_open_price_12 , 3 , l_ord_open_price_12 - StopLoss * Point - 2.0 * gd_104 , l_ord_open_price_12 + Profit * Point + gd_104 , "" , 2 , 0 , Navy ) ;
   }
   if ( l_count_8 < Orders & & l_count_8 ! = 0 ) {
      l_ord_open_price_12 = NormalizeDouble ( l_ord_open_price_12 - StepLevel * Point , Digits ) ;
      OrderSend ( Symbol ( ) , OP_BUYLIMIT , Lots , l_ord_open_price_12 , 3 , l_ord_open_price_12 - StopLoss * Point - 2.0 * gd_104 , l_ord_open_price_12 + Profit * Point + gd_104 , "" , 2 , 0 , Navy ) ;
   }
   return ( 1 ) ;
}

int CheckBS_min ( ) {
   double l_ord_open_price_12 ;
   double ld_20 = Ask ;
   int l_count_8 = 0 ;
   int l_ord_total_0 = OrdersTotal ( ) ;
   for ( int l_pos_4 = 0 ; l_pos_4 < l_ord_total_0 ; l_pos_4 + + ) {
      if ( OrderSelect ( l_pos_4 , SELECT_BY_POS , MODE_TRADES ) = = TRUE ) {
         if ( OrderSymbol ( ) = = Symbol ( ) & & OrderType ( ) = = OP_BUY | | OrderType ( ) = = OP_BUYSTOP & & OrderMagicNumber ( ) = = 1 ) {
            if ( OrderOpenPrice ( ) - Ask < ld_20 & & OrderOpenPrice ( ) - Ask > 0.0 ) {
               ld_20 = OrderOpenPrice ( ) - Ask ;
               l_ord_open_price_12 = OrderOpenPrice ( ) ;
               l_count_8 + + ;
            }
         }
      }
   }
   if ( l_count_8 = = 0 ) {
      l_ord_open_price_12 = NormalizeDouble ( Ask + StepLevel * Point , Digits ) ;
      OrderSend ( Symbol ( ) , OP_BUYSTOP , Lots , l_ord_open_price_12 , 3 , l_ord_open_price_12 - StopLoss * Point - 2.0 * gd_104 , l_ord_open_price_12 + Profit * Point + gd_104 , "" , 1 , 0 , Navy ) ;
   }
   if ( l_ord_open_price_12 - Ask > = 2.0 * StepLevel * Point & & l_count_8 ! = 0 ) {
      l_ord_open_price_12 = NormalizeDouble ( l_ord_open_price_12 - StepLevel * Point , Digits ) ;
      OrderSend ( Symbol ( ) , OP_BUYSTOP , Lots , l_ord_open_price_12 , 3 , l_ord_open_price_12 - StopLoss * Point - 2.0 * gd_104 , l_ord_open_price_12 + Profit * Point + gd_104 , "" , 1 , 0 , Navy ) ;
   }
   return ( 1 ) ;
}

int CheckBL_min ( ) {
   double l_ord_open_price_12 ;
   double ld_20 = Ask ;
   int l_count_8 = 0 ;
   int l_ord_total_0 = OrdersTotal ( ) ;
   for ( int l_pos_4 = 0 ; l_pos_4 < l_ord_total_0 ; l_pos_4 + + ) {
      if ( OrderSelect ( l_pos_4 , SELECT_BY_POS , MODE_TRADES ) = = TRUE ) {
         if ( OrderSymbol ( ) = = Symbol ( ) & & OrderType ( ) = = OP_BUY | | OrderType ( ) = = OP_BUYLIMIT & & OrderMagicNumber ( ) = = 2 ) {
            if ( Ask - OrderOpenPrice ( ) < ld_20 & & Ask - OrderOpenPrice ( ) > = 0.0 ) {
               ld_20 = Ask - OrderOpenPrice ( ) ;
               l_ord_open_price_12 = OrderOpenPrice ( ) ;
               l_count_8 + + ;
            }
         }
      
 
}
   }
   if (l_count_8 == 0) {
      l_ord_open_price_12 = NormalizeDouble(Ask - StepLevel * Point, Digits);
      OrderSend(Symbol(), OP_BUYLIMIT, Lots, l_ord_open_price_12, 3, l_ord_open_price_12 - StopLoss * Point - 2.0 * gd_104, l_ord_open_price_12 + Profit * Point + gd_104, "", 2, 0, Navy);
   }
   if (Ask - l_ord_open_price_12 >= 2.0 * StepLevel * Point - 2.0 * (Ask - Bid) && l_count_8 != 0) {
      l_ord_open_price_12 = NormalizeDouble(l_ord_open_price_12 + StepLevel * Point, Digits);
      OrderSend(Symbol(), OP_BUYLIMIT, Lots, l_ord_open_price_12, 3, l_ord_open_price_12 - StopLoss * Point - 2.0 * gd_104, l_ord_open_price_12 + Profit * Point + gd_104, "", 2, 0, Navy);
   }
   return (1);
}

int init() {
   return (0);
}

int deinit() {
   return (0);
}

int start() {
   gd_104 = 0;
   CheckBS();
   CheckBL();
   CheckBS_min();
   CheckBL_min();
   return (0);
}

파일:
yolka_1.mq4  6 kb
 
Vinin писал(а) >>

바라보다. 잘 작동하는 것 같습니다

하나의 실수를 수정

[삭제]  
Vinin >> :

하나의 실수를 수정했습니다

내가 연락할 일이 있으면 Victor에게 감사합니다.

긴타라스

빌뉴스.

[삭제]  
Vinin >> :

하나의 실수를 수정

빅터, 시간 있을 때 다른 차에 똑같은 걸 가엾게 여겨라.

감사합니다.

 
dadi писал(а) >>

빅터는 시간이 되면 다른 차에 같은 동정을 던진다.

감사합니다.

노력하겠습니다. 하지만 여기에 이유가 있습니다.

[삭제]  
Vinin >> :

노력해볼게, 하지만 여기에 이유가 있어

나는 수동으로 작업하고, 이것을 맨 위에 던졌습니다(첨부됨). 좋은 입구와 출구가 '십자가 위'가 아닌 것으로 나타났습니다. 빠르게 방향을 잡아야 할 때 단방향 페인트를 사용하면 불필요한 혼란을 피할 수 있습니다.

[삭제]  
여기에서 나는 어떤 이유를 찾고 이름에 불필요한 문자를 추가하고 더 나은 방법으로 ...
 
dadi писал(а) >>

나는 수동으로 작업하고, 이것을 맨 위에 던졌습니다(첨부됨). 좋은 입구와 출구가 '십자가 위'가 아닌 것으로 나타났습니다. 빠르게 방향을 잡아야 할 때 단방향 페인트를 사용하면 불필요한 혼란을 피할 수 있습니다.

그렇다면 포인트가 전혀 필요하지 않을 수 있습니까?

 
dadi писал(а) >>

나는 수동으로 작업하고, 이것을 맨 위에 던졌습니다(첨부됨). 좋은 입구와 출구가 '십자가 위'가 아닌 것으로 나타났습니다. 빠르게 방향을 잡아야 할 때 단방향 페인트를 사용하면 불필요한 혼란을 피할 수 있습니다.

파일: