확산에 대해 안내해주세요 - 페이지 4

 
deysmacro :
그래도 기억해야 합니다. EA는 진행 중인 거래만 마감합니다. 직접 거래를 시작해야 합니다.

100%, 거기에는 문제가 없습니다. 오히려 제가 달성하려고 하는 것과 정확히 일치합니다. .. EA가 거래를 시작하는 것을 원하지 않습니다. 그게 제 직업입니다. 확산을 고려해야 합니다! 천천히 다가가고 있습니다.. 이 프로그래밍은 학교에서 가르쳐줬어야 하는건데.. 헉 80년대생이라 안타깝네요 겪을 거라고는 생각도 못했는데 도움말 파일을 읽으면 읽을수록 더 찾게되네요 그리고 더 흥미로운 .. 또한, 이 포럼은 당신과 같은 사람들 덕분에 많은 도움을 받았습니다.
 
tatyawinchu :

IF 루프를 추가한 다음 루프를 시작하는 나머지 코드를 아래에 붙여넣으면 어떻게 될까요?

IF 조건은 OrdersTotal이 => 2가 되도록 확인해야 스프레드 후 X 이익으로 모든 미결 주문을 마감하도록 제어가 전달됩니다.



" IF 조건은 OrdersTotal을 => 2로 확인 해야 스프레드 후 X 이익으로 모든 미결 주문을 마감하도록 제어가 전달됩니다."

하지만 시도하면 정말 나쁜 일은 일어나지 않을 것이라고 확신합니다. 그리고 작동하지 않으면 잃을 것이 없습니다. 적어도 당신은 시도했습니다.

 
tatyawinchu :

100%, 거기에는 문제가 없습니다. 오히려 제가 달성하려고 하는 것과 정확히 일치합니다. .. EA가 거래를 시작하는 것을 원하지 않습니다. 그게 제 직업입니다. 확산을 고려해야 합니다! 천천히 다가가고 있습니다.. 이 프로그래밍은 학교에서 가르쳐줬어야 하는건데.. 헉 80년대생이라 안타깝네요 겪을 거라고는 생각도 못했는데 도움말 파일을 읽으면 읽을수록 더 찾게되네요 그리고 더 흥미로운 .. 또한, 이 포럼은 당신과 같은 사람들 덕분에 많은 도움을 받았습니다.

총 이익에 스프레드를 포함하기만 하면 됩니다.
 
thrdel :


" IF 조건은 OrdersTotal을 => 2로 확인해야 스프레드 후 X 이익으로 모든 미결 주문을 마감하도록 제어가 전달됩니다."

하지만 시도하면 정말 나쁜 일은 일어나지 않을 것이라고 확신합니다. 그리고 작동하지 않으면 잃을 것이 없습니다. 적어도 당신은 시도했습니다.


" IF 조건은 OrdersTotal을 => 2로 확인해야 스프레드 후 X 이익으로 모든 미결 주문을 마감하도록 제어가 전달됩니다."

흠.. 그래 내 말은

IF .. 미결 주문의 총 수가 2 .. 이상인 경우에만 나머지 코드를 따르십시오.

IF 총 미결 주문 수 .. [ OrdersTotal() ?? ] .. 2보다 작습니다 .. 즉, 1 또는 0을 의미하고 아무 것도 하지 않습니다.

자, 여기 mql 4 도움말 파일에 OrdersTotal()이 모든 주문, 시장 및 보류 중을 계산한다고 나와 있는 문제가 있습니다. 보류 중인 주문이 아닌 실시간 시장 주문만 가져올 수 있는 일부 기능 을 찾으려고 합니다. 어쨌든 나는 이동 중에 최대 2개의 거래만 실행하기 때문에 수학적으로 계산할 수 있습니다.

이 설명이 더 명확합니까?

당신이 나에게 남자를주는 시간 동안 tx.

 

thrdel 은 어떤 일이 일어날지 확신하지만 먼저 시도해보고 어떤 일이 일어나는지 보기를 바랍니다.

 
deysmacro :

thrdel 은 당신이 먼저 시도하고 어떤 일이 일어나는지 보기를 원합니다.



예, 도움말 파일을 통해 열린 주문만 제공하는 적절한 기능 을 찾습니다.
 
코드를 완료할 수 있을 때 코드를 보여주시면 가능한 경우 도와드리겠습니다.
 
deysmacro :
코드를 완료할 수 있을 때 코드를 보여주시면 가능한 경우 도와드리겠습니다.

알 겠어 ! 로드 감사합니다..

..

그리고 오픈거래만 돌려주는 함수 를 찾지 못했어요.. 그렇군요. 그래서 아래와 같이 IF 루프를 추가했습니다..

 //+------------------------------------------------------------------+
//|                    CloseTrades_After_Account_Profit_Reached.mq4  |
//|                                     Copyright © 2007, Tradinator |
//|                                          tradinator.fx@gmail.com |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2007, Tradinator"
#property link        "tradinator.fx@gmail.com"


                                       
extern double My_Money_Profit_Target= 100 ;     //The amount of money profit at which you want to close ALL open trades.
extern string Profit_Target= "Enter above To Close all OPEN trades when amount of profit is Reached in Account and not per OPEN trade! " ;
                                          
int Slippage= 5 ;
int i;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//---- 
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+


int start()

//+------------------------------------------------------------------+
//| This is just the single line of code that I have added
//+------------------------------------------------------------------+
{ 
 if ( OrdersTotal ()>= 2 )

 {
   if ( AccountProfit ()>= My_Money_Profit_Target)
   {
     for (i= OrdersTotal ()- 1 ;i>= 0 ;i--)
       {
       OrderSelect (i, SELECT_BY_POS );
       int type   = OrderType ();
               
       bool result = false ;
              
       switch (type)
          {
           //Close opened long positions
           case OP_BUY   : result = OrderClose ( OrderTicket (), OrderLots (), MarketInfo ( OrderSymbol (), MODE_BID ),Slippage,Pink);
                         break ;
               
           //Close opened short positions
           case OP_SELL : result = OrderClose ( OrderTicket (), OrderLots (), MarketInfo ( OrderSymbol (), MODE_ASK ),Slippage,Pink);
                          
          }
          
       if (result == false )
          {
             Sleep ( 0 );
          }  
       }
       Print ( "Account Profit Reached. All Open Trades Have Been Closed" );
       return ( 0 );
   }  
   
   Comment ( "Balance: " , AccountBalance (), ", Account Equity: " , AccountEquity (), ", Account Profit: " , AccountProfit (),
           "\nMy Account Profit Target: " ,My_Money_Profit_Target);
   
   return ( 0 );
   }
 }

시작 시 IF 조건을 추가했는데 if ( OrdersTotal ()>= 2 ) .. [위의 코드에서 주석으로 강조 표시됨]

이제 첫 번째 시도에서 {}를 닫는 데 문제가 있었습니다.

{ 
 if ( OrdersTotal ()>= 2 )
}

 {
   if ( AccountProfit ()>= My_Money_Profit_Target)
   {
     for (i= OrdersTotal ()- 1 ;i>= 0 ;i--)
       { .. etc etc 
     

그래서 기본적으로 첫 번째 코더로서, 나는 조건을 먼저 확인하기 위해 그것을 넣으려고했습니다. 컴파일하지 않았습니다 ..

그래서 조건을 내부에 가져와서 {}를 닫았습니다. 이제 2개의 경고와 함께 오류 없이 컴파일되었습니다.

'OrderSelect'의 반환 값을 확인해야 합니다. 테스트 코드 1.mq4 56 8

모든 제어 경로가 값을 반환하는 것은 아닙니다. 테스트 코드 1.mq4 86 2

그래서 그것은 컴파일 .. 논리적으로 정확합니까?

[또한, 저작권 정보를 삭제하지 않고 한 줄만 추가하는 것입니다. 세부 정보를 삭제하는 것은 제 입장에서 완전히 불공정합니다.. 그것에 관한 규칙은 무엇입니까? ]

 
tatyawinchu :

예, 도움말 파일을 통해 열린 주문만 제공하는 적절한 기능을 찾습니다.


정말 죄송합니다. 전에도 말했지만 저는 설명을 잘 못합니다. 나는 당신이 열린 구매 또는 판매 주문 만 계산하는 기능을 찾고 싶어한다는 것을 이해합니다. 내 코드를 보도록 요청했고 최선을 다해 설명했지만 기대했던 것만큼 좋지는 않았습니다.

내가 그 코드에 대해 언급한 첫 번째 단계를 기억합니까?

그것은 : CountMyOrders. 이제 제가 질문한 대로 코드를 살펴보면 다음과 같습니다.

 //+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double CountMyOrders()
  {
   myOrders= 0 ;
   for ( int cnt= OrdersTotal ()- 1 ;cnt>= 0 ;cnt--)
     {
       if ( OrderSelect (cnt, SELECT_BY_POS , MODE_TRADES )== false )
         Print ( "Failed to select order, error : " +ErrorDescription(GetLastError()));
       //skip orders placed by other EA's
       if ( OrderMagicNumber ()> 0 ) continue ;
       if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL )
        {
         myOrders++;
        }
     }
   return (myOrders);
  }

그것은 말한다 :

 if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL )

OP_BUY와 OP_SELL이 무엇을 의미하는지 알아야 합니다.

미결 주문 카운트 없음, 공개 매수 정지 없음, 공개 매도 정지 없음, 매수 제한 또는 매도 제한 없음, 단지 공개 매수 및 공개 매도.

그 코드 조각과 그 기능을 어떻게 더 잘 설명할 수 있습니까?

문서를 계속 검색하고 익숙해질 수 있지만 내가 말할 수 있는 것은 당신이 찾고 있는 기능이 거기에 없다는 것입니다.

내 EA는 아직 주문이 없으면 기다리라고 말합니다.

 if (myOrders< 1 )

당신은 당신이 2 주문을 기다리기를 원합니다. 내가 말한 것에 약간의 주의를 기울인다면 아마도 당신이 해야 할 일은 다음과 같다는 것을 알게 될 것입니다:

 if (myOrders< 2 )

짜잔. 이제 2개의 주문이 완료되기를 기다립니다. 보류 중, 구매 또는 판매만 가능합니다!

특정 목적을 위해 설계된 사용자 정의가 아닌 공개 거래를 관리하는 방법을 찾고 있는 다른 사람들에게도 적합하도록 코드를 조합하려고 노력했다는 점을 이해해 주십시오.

예를 들어, 좋다고 생각하는 것을 취하고, 나머지는 생략하고, 개선하고, 변경하고, 가능하면 배우고 실험하십시오.

그것이 의미가 있기를 바랍니다.

 
thrdel :


정말 죄송합니다. 전에도 말했지만 저는 설명을 잘 못합니다. 나는 당신이 열린 구매 또는 판매 주문만 계산하는 기능을 찾고 싶어한다는 것을 이해합니다. 내 코드를 보도록 요청했고 최선을 다해 설명했지만 기대했던 것만큼 좋지는 않았습니다.

내가 그 코드에 대해 언급한 첫 번째 단계를 기억합니까?

그것은 : CountMyOrders. 이제 제가 질문한 코드를 보면 다음과 같습니다.

그것은 말한다 :

OP_BUY와 OP_SELL이 무엇을 의미하는지 알아야 합니다.

미결 주문 카운트 없음, 공개 매수 정지 없음, 공개 매도 정지 없음, 매수 제한 또는 매도 제한 없음, 단지 공개 매수 및 공개 매도.

그 코드 조각과 그 기능을 어떻게 더 잘 설명할 수 있습니까?

문서를 계속 검색하고 익숙해질 수 있지만 내가 말할 수 있는 것은 당신이 찾고 있는 기능이 거기에 없다는 것입니다.

내 EA는 아직 주문이 없으면 기다리라고 말합니다.

당신은 당신이 2 주문을 기다리기를 원합니다. 내가 말한 것에 약간의 주의를 기울인다면 아마도 당신이 해야 할 일은 다음과 같다는 것을 알게 될 것입니다:

짜잔. 이제 2개의 주문이 완료되기를 기다립니다. 보류 중, 구매 또는 판매만 가능합니다!

특정 목적을 위해 설계된 사용자 정의가 아닌 공개 거래를 관리하는 방법을 찾고 있는 다른 사람들에게도 적합하도록 코드를 조합하려고 노력했다는 점을 이해해 주십시오.

예를 들어, 좋다고 생각하는 것을 취하고, 나머지는 생략하고, 개선하고, 변경하고, 가능하면 배우고 실험하십시오.

그것이 의미가 있기를 바랍니다.

로드 감사합니다 .. 먼저, 당신이 아닙니다! 전부 나야! 헤헤 제가 여기 초보자입니다 .. 설명이 완벽합니다! 지금은 소화하기가 조금 어렵습니다. .. 도움말 파일을 통해 한 단어 한 단어씩 =) 막히면 도움을 요청 합니다. .. 오히려, 이제 귀하의 코드로 인해 도움말에서 FUNCTION 섹션을 읽고 있습니다. 파일! ! 또한 위에 붙여넣은 코드를 마지막에 컴파일하고 해당 IF 조건의 논리에 문제가 있는지 확인할 수 있습니까? 지금은 모든 주문을 계산하므로 생략하겠습니다. 예를 들어 이 EA가 열려 있는 주문이 없을 때 실행되면 첫 번째 주문이 열리고 얼마 후 다른 주문이 트리거됩니다. IF 조건의 논리 흐름이 올바른가요? 또한, 나는 이제 이 코드에 수정 라인이 필요하다는 것을 거의 확신합니다. [ 또한, 이것을 작업으로 게시하는 아이디어를 삭제했습니다. 다른 EA는 저에게 이것이 유일한 EA가 실행될 것이기 때문에 각 주문 등에 특별히 매직 넘버를 할당할 필요가 없습니다. 이제 내 IF의 논리가 올바른지 알아내기만 하면 됩니다^^