포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 537

 
VoDyaMon :

OBJ_ARROW_RIGHT_PRICE 유형의 개체를 생성한 다음 삭제하는 간단한 스크립트를 작성하면 개체가 삭제되지 않습니다. 또한 ObjectType 명령은 생성된 개체가 OBJ_ARROW_RIGHT_PRICE(==36) 유형이 아니라 ==22 즉, 간단한 "위쪽 화살표"!!! 저만 이런건가요 아니면 모두에게 이런건가요?

이 문제에 대한 "전문가"의 의견이 이미 있습니다. 도움말을 읽거나 메모리가 충분하지 않습니다 :).

충분한 메모리가 있습니다.

ObjectCreate 명령이 차트에 OBJ_ARROW_RIGHT_PRICE 유형의 개체를 그리는 것으로 나타났습니다. 이 개체는 ObjectsDeleteAll(0,OBJ_ARROW_RIGHT_PRICE) 명령으로 삭제할 수 없지만 ObjectsDeleteAll(0,22) 명령으로 삭제할 수 있습니다. 올바른 가격 라벨이 아니라 "위쪽 화살표"입니다. 누구의 캔트?

... ... ...

OBJ_ARROW_RIGHT_PRICE 유형의 개체를 삭제하려면 하위 창의 필수 표시와 함께 ObjectsDeleteAll(0,OBJ_ARROW) 명령을 사용합니다.

ps OBJ_ARROW 유형의 개체는 "위쪽 화살표"뿐만 아니라 모든 "화살표"입니다. ObjectCreate(...OBJ_ARROW...)는 즉시 "위쪽 화살표"를 만듭니다. 글쎄, 문제, 이것이 인증서에없는 이유는 무엇입니까?

이 스레드에 씁니다. 최소한 개발자는 있습니다.
 

스크립트가 있습니다:

 #property show_confirm ;
int slip= 5 ;

void start()
{
   for ( int i= OrdersTotal ()- 1 ;i<= 0 ;i--)
  {
   int p= 0 ; double price= 0 ;
       if ( OrderSelect (i, SELECT_BY_POS ))
     {
       switch ( OrderType ())
        {
         case 0 : price = MarketInfo ( OrderSymbol (), MODE_BID ); break ;
         case 1 : price = MarketInfo ( OrderSymbol (), MODE_ASK ); break ;
         default : break ;
        }
         while (p< 5 )                              
           {                                    
             bool tik= OrderClose ( OrderTicket (), OrderLots (),price,slip,Red);
             if (tik== true ) 
               break ;                   
             else                               
              {
               p++;                              
               Print ( __FUNCTION__ , "_Error_" ,GetLastError()); 
               Sleep ( 1000 );                       
              }
           }
     }
 }
}

현재 열려 있는 시장 주문 중 하나 이상의 시장 주문을 닫으려 하지도 않습니다. 왜요?

로그에 오류가 기록되지 않습니다.

2014.03.10 04:39:11.093 스크립트 closeallmarket AUDUSD,M30: 제거됨
2014.03.10 04:39:11.093 closeallmarket AUDUSD,M30: 단위 이유 0
2014.03.10 04:39:11.093 closeallmarket AUDUSD,M30: 초기화
2014.03.10 04:39:10.109 스크립트 closeallmarket AUDUSD,M30: 성공적으로 로드됨
 

바꾸다

 for ( int i= OrdersTotal ()- 1 ;i<= 0 ;i--)

 for ( int i= OrdersTotal ()- 1 ;i>= 0 ;i--)
 

안녕하세요, 전문가 여러분, 프로그래밍 초보자를 거부하지 말고 올바른 철자를 위해 코드를 살펴보십시오. 그를 다루기에 너무 게으르지 않은 사람. 대용량 코드 작성은 이번이 처음이라 멀티 화폐라서 테스터에서 테스트는 못하지만 트레이딩 시스템은 그만한 가치가 있습니다. 코드와 지표가 있는 파일은 아카이브에 첨부되어 있습니다 .



 

안녕하세요.

php에서 mql4로 코드를 유사하게 작성할 수 없습니다.

$massiv = array(
             "1" => 0.2145 ,
             "2" => 1.5447 ,
             "3" => 0.3544 ,
             "4" => 3.6541 ,
             "5" => 6.5441 ,
             "6" => 4.3217 ,
             "7" => 5.8354 ,
             "8" => 7.6877             
            );
                        
            asort($massiv);
            $i= 0 ;
             foreach ($massiv as $key => $val){$i++;$massiv[$key]=$i;}
            
            $a= "" ;
            ksort($massiv);
             foreach ($massiv as $key => $val){$a=$a.$val. "." ;}  

그것은 배열에서

             "1" => 0.2145 ,
             "2" => 1.5447 ,
             "3" => 0.3544 ,
             "4" => 3.6541 ,
             "5" => 6.5441 ,
             "6" => 4.3217 ,
             "7" => 5.8354 ,
             "8" => 7.6877 

배열을 가져와야 합니다.

             "1" => 1 ,
             "2" => 3 ,
             "3" => 2,
             "4" => 4 ,
             "5" => 7 ,
             "6" => 5 ,
             "7" => 6,
             "8" => 8 

도움이 필요하다.

 
Roger :

바꾸다


Ohhh ... 젠장, 다시 한 번 같은 레이크에 감사합니다)))
 

예금 통화의 손익의 지정된 값에 도달하면 계정의 모든 포지션을 닫는 간단한 Expert Advisor를 작성 하려고 합니다(여러 기호에 대해 엽니다). 나타날 때만 즉시 포지션을 닫습니다( ((

나는 무엇이 잘못되었는지 이해하지 못한다.

 input double tp_c = 80.0 ;
input double sl_c = 120.0 ;

input int slip= 5 ;

 double profit_c = 0.0 ;

void OnTick ()
  {
   currencyprofit();
   if (profit_c > tp_c || profit_c < sl_c) closeall();
  }

double currencyprofit()
  {
   for ( int i= OrdersTotal ()- 1 ;i>= 0 ;i--)
     {
       if ( OrderSelect (i, SELECT_BY_POS ))
         profit_c = profit_c + OrderProfit ();
     }
   return (profit_c);
  }

void closeall()
  {
     for ( int i= OrdersTotal ()- 1 ;i>= 0 ;i--)
     {
       int p= 0 ; double price= 0 ;
         if ( OrderSelect (i, SELECT_BY_POS ))
        {
           switch ( OrderType ())
           {
             case 0 : price = MarketInfo ( OrderSymbol (), MODE_BID ); break ;
             case 1 : price = MarketInfo ( OrderSymbol (), MODE_ASK ); break ;
             default : break ;
           }
             bool tik= OrderClose ( OrderTicket (), OrderLots (),price,slip,Red);
             if (tik== false ) 
              {
               Print ( __FUNCTION__ , "_Error_" ,GetLastError()); 
               Sleep ( 3000 );
               break ;
              }
        }
     }
  }
 
denis77515 :

안녕하세요, 여러분, 전문가 프로그래밍 초보자를 거부하지 말고 올바른 철자를 위해 코드를보십시오. 그를 다루기에 너무 게으르지 않은 사람. 대용량 코드 작성은 이번이 처음이라 멀티 화폐라서 테스터에서 테스트는 못하지만 트레이딩 시스템은 그만한 가치가 있습니다. 코드와 지표가 있는 파일은 아카이브에 첨부되어 있습니다 .



나는 초보자가 어떻게 그러한 전문가와 거래하기로 결심하고 거래 시스템이 그만한 가치가 있다고 쓰는지에 대해 매우 관심이 있습니다. 보증금이 아깝지 않으세요?


거래 알고리즘의 본질에 빠지지 않고 코드로 - 많은 오류, 최적화 시도 없음

함수에서 차이점을 찾으십시오. CountBuy_JPY() CountSell_JPY() CountBuy_GBP() 이들 중 하나의 출력에서 Buy all open buys(모든 공개 구매 구매)에서 동일한 결과를 얻을 수 있고 다른 모든 것(모든 판매)에서 동일한 결과를 얻을 수 있습니다. 이 모든 기능을 하나로 작성하고 기호와 그에 대한 주문 수가 포함된 두 개의 연관된 배열을 얻으려고 시도하십시오. 이미 코드를 3분의 1로 줄이십시오.

그리고 당신은 테스터에서 달만큼 멀리 떨어져 있습니다. 각 함수에 대한 스크립트를 작성하고 어떤 일이 발생하는지 확인한 다음 디버거를 실행하고 모든 변수를 확인하십시오. 이런 식으로만 점진적으로 적어도 한 단계 전진할 수 있습니다.

 
evillive :

예금 통화의 손익의 지정된 값에 도달하면 계정의 모든 포지션을 닫는 간단한 Expert Advisor를 작성하려고 합니다(여러 기호에 대해 엽니다). 나타날 때만 즉시 포지션을 닫습니다( ((

나는 무엇이 잘못되었는지 이해하지 못한다.


조건 분석 ... 그리고 조언은 동일하고 인쇄물과 함께 스크립트를 사용하고 디버거와 함께 당분간 거래 작업 을 주석 처리하십시오
 if (profit_c > tp_c || profit_c < sl_c) closeall();   profit_c > 80 ИЛИ  profit_c < 120   
 
evillive :

예금 통화의 손익의 지정된 값에 도달하면 계정의 모든 포지션을 닫는 간단한 Expert Advisor를 작성하려고 합니다(여러 기호에 대해 엽니다). 나타날 때만 즉시 포지션을 닫습니다( ((

나는 무엇이 잘못되었는지 이해하지 못한다.



 input double tp_c = 80.0 ;
input double sl_c = - 120.0 ; //// minus 120

input int slip= 5 ;

 double profit_c ;

void OnTick ()
  {
   currencyprofit();
   if (profit_c > tp_c || profit_c < sl_c) closeall();
  }

double currencyprofit()
  {
   profit_c = 0.0 ;
   for ( int i= OrdersTotal ()- 1 ;i>= 0 ;i--)
     {
       if ( OrderSelect (i, SELECT_BY_POS ))
         profit_c = profit_c + OrderProfit ();
     }
   return (profit_c);
  }

void closeall()
  {
     for ( int i= OrdersTotal ()- 1 ;i>= 0 ;i--)
     {
       int p= 0 ; double price= 0 ;
         if ( OrderSelect (i, SELECT_BY_POS ))
        {
           switch ( OrderType ())
           {
             case 0 : price = MarketInfo ( OrderSymbol (), MODE_BID ); break ;
             case 1 : price = MarketInfo ( OrderSymbol (), MODE_ASK ); break ;
             default : break ;
           }
             bool tik= OrderClose ( OrderTicket (), OrderLots (),price,slip,Red);
             if (tik== false ) 
              {
               Print ( __FUNCTION__ , "_Error_" ,GetLastError()); 
               Sleep ( 3000 );
               break ;
              }
        }
     }
  }
사유: