EA 코드 2 문제(SL 관리자) - 페이지 2

 
Funky :

안녕하세요 랩터님, 다시 한번 감사드립니다.

1. 위 코드의 유일한 문제인가요??? 최악의 경우 PendingOrderTicket_1이 수정되지 않고 SL에서 닫힐 것이라고 생각합니다.

2. OrderSelect 기능을 사용하는 방법은 괜찮습니까?

내가 가질 것이라고 생각하는 큰 문제는 OrderTicket_1이 첫 번째 Gap_Level1을 초과할 때 이 기준이 충족되는 모든 항목의 순서를 계속 수정한다는 것입니다.

3. 그런가요? 그렇다면 아래 코드로 해결될까요?

다시 한번 감사합니다 ;)

1. 나에게 튀어나온 것은 당신의 코드를 깨뜨릴 것입니다.


2. 티켓 번호를 사용하여 선택하려는 경우 OrderSelect가 잘못되었습니다( https://docs.mql4.com/trading/OrderSelect ). SELECT_BY_POS 가 아닌 SELECT_BY_TICKET 을 사용해야 합니다.

3. 나는 그렇게 생각하지 않습니다. 당신이 한 일은 그 함수가 한 번만 호출된다는 것을 의미할 것이라고 생각합니다. . . 수정이 필요한 다음 주문이 있으면 어떻게 됩니까? 두 개의 주문이 동시에 열려 있으면 어떻게 됩니까?

나는 당신이하고있는 일에 100 % 정통하지 않습니다. 당신의 코드를 자세히 볼 시간이 없습니다. . . 하지만, 질문이 있습니다.

Order의 OrderOpenPrice(), OrderStopLoss() 및 OrderTakeProfit()을 보고 이미 레벨 1 2 또는 3으로 수정되었는지 확인할 수 없습니까?

 
RaptorUK :

1. 나에게 튀어나온 것은 당신의 코드를 깨뜨릴 것입니다.


2. 티켓 번호를 사용하여 선택하려는 경우 OrderSelect가 잘못되었습니다( https://docs.mql4.com/trading/OrderSelect ). SELECT_BY_POS 가 아닌 SELECT_BY_TICKET 을 사용해야 합니다.

3. 나는 그렇게 생각하지 않습니다. 당신이 한 일은 그 함수가 한 번만 호출된다는 것을 의미할 것이라고 생각합니다. . . 수정이 필요한 다음 주문이 있으면 어떻게 됩니까? 두 개의 주문이 동시에 열려 있으면 어떻게 됩니까?

나는 당신이하고있는 일에 100 % 정통하지 않습니다. 당신의 코드를 자세히 볼 시간이 없습니다. . . 하지만, 질문이 있습니다.

Order의 OrderOpenPrice(), OrderStopLoss() 및 OrderTakeProfit()을 보고 이미 레벨 1 2 또는 3으로 수정되었는지 확인할 수 없습니까?

Raptor 감사합니다. 통찰력이 저에게 큰 도움이 되었습니다...

시간 제약이 있는 것도 충분히 이해합니다. 귀하의 시간과 팁은 매우 감사했습니다.... 누군가에게 저를 대신하여 작성해 달라고 요청하지 않았기 때문에 자세한 내용은 다루지 않았습니다... 이것이 문제를 나타냅니다. 자세한 내용이 없으면 도움을 드리기가 어려워서 죄송합니다..... 이 경우에는 배우면서 더 신경쓰이던 코드였는데 님의 팁이 저에게 큰 힘이 되었습니다.

1. 테스트를 위해 함께 모으기 위해 노력하고 있으므로 나중에 경험이 많을 때 전원이 꺼지는 문제를 해결할 수 있습니다.

2. POS가 아닌 SELECT_BY_TICKET으로 변경하겠습니다. 감사합니다.

3. GAP_Level1이 한 번만 호출되기를 원합니다. 그래서 아마도 제가 모든 것을 함께 묶은 방식이 맞을 것입니다. 귀하의 질문에 답하기 위해 저는 최신 Pending Order's Ticket을 살펴보려고 합니다. 내 TradeUp 표시를 초과하는지 확인하십시오. 그런 일이 발생하면 이전 주문을 모두 끌어올리고 싶습니다(이번에는 모든 주문을 가져오려면 마법 번호로 선택)... 이 단계에서 다른 보류 중인 주문이 열려 있고 Gap_Level2에 도달하면 같은 코드로 BuyModify_Level2 블록을 갖게 됩니다.... 그럴싸한가요??

나는 내 논리로 글을 쓰기를 희망하고 있습니다. 이번에는 그것을 없애기 위해 제안한 것처럼 종이를 들고 앉아 있었습니다... ;)

 
Funky :


3. GAP_Level1이 한 번만 호출되기를 원합니다. 그래서 아마도 제가 모든 것을 함께 묶은 방식이 맞을 것입니다. 귀하의 질문에 답하기 위해 저는 최신 Pending Order's Ticket을 살펴보려고 합니다. 내 TradeUp 표시를 초과하는지 확인하십시오. 그런 일이 발생하면 이전 주문을 모두 끌어올리고 싶습니다(이번에는 모든 주문을 가져오려면 마법 번호로 선택)... 이 단계에서 다른 보류 중인 주문이 열려 있고 Gap_Level2에 도달하면 같은 코드로 BuyModify_Level2 블록을 갖게 됩니다.... 그럴싸한가요??


HasBeenExecuted = false를 설정하는 방법(또는 코드의 위치) ; IfGap_Level_1() 이 두 번째 거래 세트에 대해 실행 되도록 하시겠습니까?
 
RaptorUK :
HasBeenExecuted = false를 설정하는 방법(또는 코드의 위치) ; IfGap_Level_1() 이 두 번째 거래 세트에 대해 실행 되도록 하시겠습니까?

좋은 질문 친구.

내보낸 변수 아래에 있는 내부 변수의 시작 부분에서 해당 변수를 부울로 설정하려고 했습니다. GAP_Level_1, GAP_Level_2, GAP_Level_3, GAP_Level_4, GAP_Level_5 등을 수행하려고 했습니다. 따라서 GAP_Level_1에 도달하면 이 첫 번째 간격 수준을 잊을 수 있습니다.

당신은 나를 생각하게 만들었습니다. 대단히 감사합니다. 이제 문제가 보입니다.

나는 거래가 SL에 도달하고 다시 시작할 때 첫 번째 거래가 Gap_Level_1을 다시 찾고 순환하기를 원한다는 것을 깨달았습니다. 그리고 젠장, 문제를 일으킬 것입니다. PendingOrder_1을 GAP_Level_1과 연결하고 PendingOrderLevel_Level_2를 GAP_Level2와 연결하려고 했기 때문입니다.

아직 꺼낼 수 있을 것 같지만, 당신이 언급하지 않는 한 나는 이것에 대해 생각하지 않았을 것입니다. . . . .

나는 세 가지 해결 방법을 생각할 수 있습니다. 첫 번째는 내 두뇌 능력에 조금 더 적합합니다 하하 ;)

1. 만약 내가 IF LAST TRADE IS LOSS, DELETE ALL PENDING ORDERS , 그리고 거래가 SL에 도달하면 다시 시작하십시오. Pending Order 1이 Gap Level_1로 이동하도록 Pending_Order5가 GAP_Level5로 가는 다음 거래가 열리는 것을 중지합니다. SL에 도달한 후 모든 공개 거래는 동일한 SL을 공유하므로 닫힐 것이므로 보류 중인 주문을 닫고 논리를 다시 시작해도 괜찮습니다.

2. 내가 생각할 수 있는 다른 옵션은(몇 주 전 제 다른 코드 문제에 대한 귀하의 팁 덕분에) NEWTRADE라는 첫 번째 거래가 이루어진 후 부울 변수를 삽입한 다음 IFNEWTRADE==1 블록을 갖는 것입니다. 그런 다음 GAP_Level1로 이동합니다. 이것은 내가 Pending Order 1 블록에서 IFNEWTRADE1로 갈 수 있고 Pending Order 2 Block에서 IFNEWTRADE2로 갈 수 있다고 생각합니다. 그런 다음 IFNEWTRADE2==1은 GAP_Level2로 이동합니다.

편집(커피 후): 3. 시간순으로 주문을 정렬하고(이제 여러 주문을 여러 가지 방법으로 정렬할 수 있다는 것을 알고 있음) TIME을 기반으로 ORD_SELECT_NUMBER라는 정수 변수를 할당하면 어떻게 될까요? 그런 다음 ORD_SELECT_NUMBER == 1 이후에 GAP_Level1로 이동한 다음 해당 ORDER_SELECT_NUMBER ++ 명령을 사용하여 다음 ORD_SELECT_NUMBER를 봅니다.

나는 신호 등을 기반으로 단일 주문 EA를 작성하는 데 괜찮습니다. 정직하게 나를 죽이는 것은 바로 이 다중 주문 물건입니다... 내 EA는 실제로 그대로 작동하고 좋은 결과를 얻습니다. 수정하면서 사용하는 것은 미친 짓입니다. EVERYTICK에서 위의 모든 것을 함께 묶는 방법을 연구한 이후로 분명히 가장 작은 Gap_Level atm을 사용합니다...

와우.. Raptor님과 코딩지식 다시한번 감사합니다 좋은 로직도 얼마나 중요한지 알겠네요 생각하게 해주셔서 감사합니다.

 
Funky :

와우.. Raptor님과 코딩지식 다시한번 감사합니다 좋은 로직도 얼마나 중요한지 알겠네요 생각하게 해주셔서 감사합니다.

당신은 잘못된 방법을 가지고 있습니다. . . C++, Perl, Pascal, Fortran, Assembler 등의 언어로 코딩된 모든 소프트웨어는 문제 해결에 관한 것입니다. 솔루션 이면의 논리에 결함이 있는 경우 코더가 얼마나 뛰어난지는 중요하지 않습니다. . . 솔루션이 먼저이고 코드가 나중에 나옵니다.
 
RaptorUK :
당신은 잘못된 방법을 가지고 있습니다. . . C++, Perl, Pascal, Fortran, Assembler 등의 언어로 코딩된 모든 소프트웨어는 문제 해결에 관한 것입니다. 솔루션 이면의 논리에 결함이 있는 경우 코더가 얼마나 뛰어난지는 중요하지 않습니다. . . 솔루션이 먼저 나오고 코드가 나중에 나옵니다.

무슨 말인지 이해가 갑니다... 건축 계획이 없는 건축가는 세계 최고의 건축가라 할지라도 멀리 갈 수 없습니다. 초기 계획이 거의 더 중요하다고 들었습니다.

당신은 나에게 큰 도움이되었고 랩터에게 다시 감사 인사를 전하고 싶었습니다.

나는 위의 게으른 옵션 1을 사용했습니다.

프로그래밍하는 데 몇 시간이 걸렸고 내 EA는 약 85k(따라서 단편만 게시됨)이므로 이 공룡이 완성된 후 어떻게 되었는지 아직 보고하지 않았습니다. 나는 꽤 운이 좋으며 주문이 제대로 선택됩니다. 기존에 쓰던 1차 EA와는 거리가 멀기 때문에 가면서 공부를 하고 있습니다. 나는 이 프로젝트와 수영하는 법을 배우면서 깊은 곳으로 뛰어 들었습니다. 가는 방법을 다시 포스팅하겠습니다.

랩터님 다시한번 감사드립니다 :)

 
Funky :

무슨 말인지 이해가 갑니다... 건축 계획이 없는 건축가는 세계 최고의 건축가라 할지라도 멀리 갈 수 없습니다. 초기 계획이 거의 더 중요하다고 들었습니다.

당신은 나에게 큰 도움이되었고 랩터에게 다시 감사 인사를 전하고 싶었습니다.

나는 위의 게으른 옵션 1을 사용했습니다.

프로그래밍하는 데 몇 시간이 걸렸고 내 EA는 약 85k(그래서 단편만 게시됨)이므로 이 공룡이 완성된 후 어떻게 되었는지 아직 보고하지 않았습니다. 나는 꽤 운이 좋으며 주문이 제대로 선택됩니다. 기존에 쓰던 1차 EA와는 거리가 멀기 때문에 가면서 공부를 하고 있습니다. 나는 이 프로젝트와 수영하는 법을 배우면서 깊은 곳으로 뛰어 들었습니다. 가는 방법을 다시 포스팅하겠습니다.

랩터님 다시 한번 감사드립니다 :)

코드 리소스가 확장되는 자신을 보고 향후 EA에서 공통적으로 사용할 수 있는 기능 이 있으면 라이브러리/포함 등을 사용하는 것을 고려하십시오.

벡. 티라노사우르스로 성장하면 코드는 자신의 쥬라기 공원에서 길을 잃습니다. 나중에 사용하기 위해 다시 필요할 때.

 
diostar :

코드 리소스가 확장되는 자신을 보고 향후 EA에서 공통적으로 사용할 수 있는 기능이 있으면 라이브러리/포함 등을 사용하는 것을 고려하십시오.

벡. 티라노사우르스로 성장하면 코드는 자신의 쥬라기 공원에서 길을 잃습니다. 나중에 사용하기 위해 다시 필요할 때.



하하 형님, 웃었습니다. 나는 그것이 어떻게 일어날 수 있는지 본다.

솔직히 말해서 'OrderSendReliable.mqh'라는 라이브러리 삽입물을 찾았습니다. 나는 이 EA를 먼저 끝내고 그 라이브러리 인서트를 어떻게 사용했는지 다시 게시할 예정이었습니다. 그 다음에는 뜨거운 시장 문제를 해결할 수 있다고 믿었던 다른 EAcode 게시물과 함께 게시할 예정이었습니다.

나는 킥킥 웃었습니다. 이제 경험을 통해 EA 상단에 모든 종류의 #include가 있다는 것을 알 수 있습니다. 하하, 그리고 각 EA에 대해 1MB의 파일 캐시를 가지고 다니고 있습니다.

당신의 댓글이 나를 생각하게 만든다는 것을 알고 있습니다. 그냥 클릭했습니다. 내가 좋아하는 {섹션}을 얻었을 때 EA 사이에 코드를 잘라 붙여넣었습니다(예: 이전에 언급한 다른 게시물에서 문제가 있었던 {섹션}). 나는 그것을 라이브러리 삽입물로 만들 생각조차 하지 않았고 그냥 참조하십시오 ... 나는 그런 종류의 것과는 거리가 멀었습니다 ... 나는이 EA 이후에 내 첫 번째 라이브러리 포함을 시작하려고했습니다. 그들이 어떻게 작동하는지 볼 수 있습니다. 가능성은 매우 훌륭합니다. 이 MQL은 꽤 중독성이 있습니다.

오 예, 제 코드에서도 모든 것이 순조롭게 진행되고 있습니다. 목적에 맞게 완벽하게 작동합니다. 큰 감사를 드리기 위해 다시 찾아왔습니다. :) ..

여러분의 지원에 정말 감사드립니다. 말로 표현할 수 있기를 바랍니다. ;)

 

자신만의 "핵심" 라이브러리 함수 세트를 가질 수 있습니다.

나는 또한 나의 첫 번째 EA로 시작했는데, 똑같은 것, 복사, 붙여넣기, 복사 붙여넣기....

전환점은 이미 퇴역한 전 직장 동료를 위해 이 EA를 하고 있을 때였습니다. 모든 것이 바뀌었고 처음으로 라이브러리를 사용하기 시작했습니다.

나는 아직도 그 도서관을 오늘까지 간직하고 있다. 아이디어를 제공하고 계속 진행하는 데 도움이 된다면... 여기 헤더가 있습니다.

 #define PI              3.1415629
#define GOLDEN_RATIO    1.618

#import "command.ex4"
   bool      isInit();
   bool      isFractional( string ins);
   bool      isOrderLimit( int cap);
   bool      isRiskLimit( double risk);
   
   int       ioSession( int h);
   string    ioWkday(datetime d);
   double    ioOrderPriceLvl( string ins, int type, double oPrice);    
   double    ioPriceLvl( string ins, double dPrice);
   bool      ioTrailStop( string ins, int tkt, int type, double oPrice, int lvl, double stop= 0 );
   int       ioTotalOrd( int magic);
         
   int       opClose( string ins, int ticket, int cmd, double lLot, bool Activate.NO_BREAK_ONE= false );
   int       opOpen( string ins, int cmd, double lLot, double lPrice, double lLoss, double lProfit, string comment, int EA.Id, int lSlip= 0 , bool Activate.NO_BREAK_ONE= false );
   int       opModify( string ins, int ticket, int cmd, double lPrice, double lLoss, double lProfit, bool Activate.NO_BREAK_ONE= false );   
   double    opStopLvl( string ins, double p);
   double    opNorm( string ins, double price);
   double    opNormL( string ins, double d);   
   double    opPoint( string ins);
   
   double    intelLot( string market, double risk, double stop); 
   double    intelCorrel( string s1, string s2, int f, int type);   
   int       intelPriceMove( string ins, int p, int L);
   int       intelTrend( string ins, int p, int q);   
#import

도움이 되었기를 바랍니다....

 
diostar :

자신만의 "핵심" 라이브러리 기능 세트를 가질 수 있으며, 나중에 보다 일찍 고려할 것을 강력히 권장합니다.

나는 또한 나의 첫 번째 EA로 시작했는데, 똑같은 것, 복사, 붙여넣기, 복사 붙여넣기....

전환점은 이미 퇴역한 전 직장 동료를 위해 이 EA를 하고 있을 때였습니다. 모든 것이 바뀌었고 처음으로 라이브러리를 사용하기 시작했습니다.

나는 아직도 그 도서관을 오늘까지 간직하고 있다. 아이디어를 제공하고 계속 진행하는 데 도움이 될 수 있다면... 여기 헤더가 있습니다.

도움이 되었기를 바랍니다....


안녕하세요 Diostar, 정말 멋진 친구입니다. 정보를 공유해 주셔서 감사합니다. 저는 아직 도서관에 대해 읽어보지 못했습니다. 변수를 가지고 다니고 나중에 미리 정의할 수 있는 멋진 방법인 것 같습니다. 생각해 봐야겠습니다. 나는 당신이 "나중보다 일찍"이라는 말을 좋아합니다. 그런 팁을 좋아합니다. 감사합니다. 마치 기타를 배우던 것처럼 20년 후 처음부터 '그냥' 했으면 하는 생각이 들었을 때 지난 20년을 더 쉽게 만들 수 있었을 텐데, lol. 이 부분은 더 진지하게 살펴보도록 하겠습니다. 감사합니다.

아, 불타오르는 줄 알았을 때, 도저히 풀 수 없을 것 같은 드라마가 있다. 다음 두 결합 섹션에서 올바른 주문을 선택하는 데 문제가 있습니다.

나는 두 가지 예를 보여주고 효과를 보여줄 수 있습니다. 내 두뇌는 이것을 클릭하지 않을 것입니다 ...

예 1:

내가 원하는 대로 이전 주문을 스크롤하지만 EVERYTICK에서 수정합니다.

(오리지널 드라마 랩터가 오더 셀렉트를 해서 레벨 충돌을 막는데 도움이 되어서 SL도 예전에 그런 이유로 뒹굴뒹굴 했었다. 이 마지막 부분은 쉽게 정리할 수 있을 것 같았는데, 며칠 동안 계속 하다 보니 막으려 하는 느낌이 들었다. 매 틱마다 발생 ..)

 void IfGap_SELLLevel_00()
{
     if ( OrderSelect (FirstRunSell_ticket_00,SELECT_BY_TICKET,MODE_TRADES)) 
    {
         if ( OrderSymbol () == Symbol () && OrderMagicNumber () == SELL_Magic01)
        {
             if ((Gap_Level_00 < 0 && ( OrderType () == OP_SELL && OrderOpenPrice () - Bid < Gap_Level_00*PipValue* Point ))
             || (Gap_Level_00 > 0 && ( OrderType () == OP_SELL && OrderOpenPrice () - Bid > Gap_Level_00*PipValue* Point )))
            {
                IfGap_SELLLevel_00AlreadyExe = false;
            }
             if (IfGap_SELLLevel_00AlreadyExe == false)
            {
                IfGap_SELLLevel_00AlreadyExe = true;
                SellOrderModifyLevel_00();
            }
        }
    }
    
    
}

void SellOrderModifyLevel_00()
{
     for ( int i= OrdersTotal ()- 1 ; i >= 0 ; i--)
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
    {
         if ( OrderType () == OP_SELL && OrderSymbol () == Symbol () && OrderMagicNumber () == SELL_Magic01) 
        { 
             double Level_00_SL = Bid + Stoploss_Level_00*PipValue* Point ;
             if (Stoploss_Level_00 == 0 ) Level_00_SL = 0 ;
             double Level_00_TP = Bid - Takeprofit_Level_00*PipValue* Point ;
             if (Takeprofit_Level_00 == 0 ) Level_00_TP = 0 ;
             bool ret00 = OrderModify ( OrderTicket (), OrderOpenPrice (), Level_00_SL, Level_00_TP, 0 , Modify_Order_Colour);
             if (ret00 == false)
             Print ( "OrderModify() error - " , ErrorDescription( GetLastError ()));
        }
    }
    
}


예 2:

이 예는 내가 원하는 것이 아닙니다 ... 모든 틱마다 수정 보내기를 중지하기 위해이 옵션을 시도했지만 주문을 스크롤하지 않고 모든 틱에서 올바른 티켓 중 하나를 수정합니다 (첫 번째 수정 주문, 주문의 인덱스 캐시에서 마지막이라고 생각합니다).

 void IfGap_SELLLevel_00()
{
     if ( OrderSelect (FirstRunSell_ticket_00,SELECT_BY_TICKET,MODE_TRADES)) 
    {
         if ( OrderSymbol () == Symbol () && OrderMagicNumber () == SELL_Magic01)
        {
             if ((Gap_Level_00 < 0 && ( OrderType () == OP_SELL && OrderOpenPrice () - Bid < Gap_Level_00*PipValue* Point ))
             || (Gap_Level_00 > 0 && ( OrderType () == OP_SELL && OrderOpenPrice () - Bid > Gap_Level_00*PipValue* Point )))
            {
                SellOrderModifyLevel_00();
            }
        }
    }
    
    
}

void SellOrderModifyLevel_00()
{
     bool IfGap_SELLLevel_00AlreadyExe = FALSE;
     for ( int i= OrdersTotal ()- 1 ; i >= 0 ; i--)
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
    {
         if ( OrderType () == OP_SELL && OrderSymbol () == Symbol () && OrderMagicNumber () == SELL_Magic01 && !IfGap_SELLLevel_00AlreadyExe) 
        { 
             double Level_00_SL = Bid + Stoploss_Level_00*PipValue* Point ;
             if (Stoploss_Level_00 == 0 ) Level_00_SL = 0 ;
             double Level_00_TP = Bid - Takeprofit_Level_00*PipValue* Point ;
             if (Takeprofit_Level_00 == 0 ) Level_00_TP = 0 ;
             bool ret00 = OrderModify ( OrderTicket (), OrderOpenPrice (), Level_00_SL, Level_00_TP, 0 , Modify_Order_Colour);
            IfGap_SELLLevel_00AlreadyExe = TRUE;
             if (ret00 == false)
             Print ( "OrderModify() error - " , ErrorDescription( GetLastError ()));
        }
    }
    
}


또 다른 50번의 시도가 있습니다. 이전에 실행되지 않은 경우 IFGAP에 전달하기 위해 먼저 약간의 IF EXECUTED 00 섹션을 시도했습니다... 그러나 손에 스위치를 삽입하는 데 운이 많이 없었습니다..... 이 예제를 게시할 수 있습니다. 해당 옵션을 표시하려면 ....

예 3:

스위치를 사용하면... 여전히 예제 1과 동일한 효과가 있습니다. 주문을 올바르게 스크롤하지만 여전히 모든 틱에서 수정합니다...

스위치가 계속해서 문제가 false가 되는 것을 볼 수 있습니다. 그래서 그냥 다시 실행합니다... 그러나 다른 시도에서는 전혀 통과하지 못하게 합니다... 이 옵션을 고수하고 IfGap_SELLLevel_00AlreadyExe = true를 다른 곳에서 선언해야 하는 경우 그래서 어디?

 void IfGap_SELLLevel_00AlreadyBlock()
{
     if ( OrderSelect (FirstRunSell_ticket_00,SELECT_BY_TICKET,MODE_TRADES))
    {
        IfGap_SELLLevel_00AlreadyExe = false;
    }
     if (IfGap_SELLLevel_00AlreadyExe == false)
    {
        IfGap_SELLLevel_00AlreadyExe = true;
        IfGap_SELLLevel_00();  
    }
}


void IfGap_SELLLevel_00()
{
     if ( OrderSelect (FirstRunSell_ticket_00,SELECT_BY_TICKET,MODE_TRADES)) 
    {
         if ( OrderSymbol () == Symbol () && OrderMagicNumber () == SELL_Magic01)
        {
            if ((Gap_Level_00 < 0 && ( OrderType () == OP_SELL && OrderOpenPrice () - Bid < Gap_Level_00*PipValue* Point ))
             || (Gap_Level_00 > 0 && ( OrderType () == OP_SELL && OrderOpenPrice () - Bid > Gap_Level_00*PipValue* Point )))
            {
                SellOrderModifyLevel_00();
                
            }
        }
    }
    
    
}

void SellOrderModifyLevel_00()
{
     for ( int i= OrdersTotal ()- 1 ; i >= 0 ; i--)
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
    {
         if ( OrderType () == OP_SELL && OrderSymbol () == Symbol () && OrderMagicNumber () == SELL_Magic01) 
        { 
             double Level_00_SL = Bid + Stoploss_Level_00*PipValue* Point ;
             if (Stoploss_Level_00 == 0 ) Level_00_SL = 0 ;
             double Level_00_TP = Bid - Takeprofit_Level_00*PipValue* Point ;
             if (Takeprofit_Level_00 == 0 ) Level_00_TP = 0 ;
             bool ret = OrderModify ( OrderTicket (), OrderOpenPrice (), Level_00_SL, Level_00_TP, 0 , Modify_Order_Colour);
             if (ret == false)
             Print ( "OrderModify() error - " , ErrorDescription( GetLastError ()));
        }
    }
    
}


그래서 네, 다시 여러분을 괴롭히기 전에 정말 노력했습니다.... 몇 시간이고... 또 길을 잃었어요...

어떤 도움이나 포인터를 주시면 감사하겠습니다 ;)