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

 
iruogl :

저는 초보자입니다.

사람들은 진드기가 바뀔 때마다 로봇이 활성화된다는 것을 어떻게 알 수 있는지 알려주세요. 그리고 새 양초가 열렸을 때만 활성화시키는 방법, 즉 양초 시가의 모습입니다.

조언을 주신 모든 분들께 감사드립니다.


일반적으로 나도 초보자이지만 전역 수준에서 datetime형 변수를 선언해야 한다고 생각합니다(예: datetime TIME;) , init() 에서 마지막 막대의 여는 시간 값을 할당합니다. , start() 시작 시 TIME== Time[0 ] -- return(0); , 그렇지 않은 경우 -- TIME= 시간[0]; . 이 경우 EA는 새 막대를 열 때 start() 함수를 한 번만 실행합니다.
 
paladin80 :
모든 숫자는 >= 및 <=를 사용하여 서로 비교할 수 있습니다. 정규화 후 NormalizeDouble은 이미 == 또는 !=로 비교할 수 있습니다. 그러나 여기서 예를 들어 이런 식으로 숫자를 비교하는 것이 의미가 있는지 살펴볼 필요가 있습니다. 소수점 이하 10자리가 같거나 같지 않은 상황을 찾는 것은 비현실적입니다.

답장 해주셔서 매우 감사합니다. 나는 질문을 명확히합니다. 정규화 후에 컴퓨터 메모리의 숫자 는 동일하게 유지되고 표현만 변경됩니다. 아니면 숫자 자체가 바뀌나요?
 
rigonich :

답장 해주셔서 매우 감사합니다. 나는 질문을 명확히합니다. 정규화 후 컴퓨터 메모리의 숫자는 동일하게 유지되고 표현 만 변경됩니다. 아니면 숫자 자체가 바뀌나요?

정규화 후 숫자 가 변경됩니다. 예를 들면 다음과 같습니다.

 double var1= 0.1234 5 6789 ;
double var2= NormalizeDouble (var1, 5 ); // var2=0.1234 6

또 다른 것은 DoubleToStr을 사용하여 인쇄할 때입니다. 예를 들면 다음과 같습니다.

 double var1= 0.1234 5 6789 ;
Print ( "var1 = " , DoubleToStr (var1, 5 )); // Выход: var1=0.1234 5

그리고 정규화 후 출력하면 다음과 같이 됩니다.

 double var1= 0.1234 5 6789 ;
double var2= NormalizeDouble (var1, 5 );   // var2=0.1234 6
Print ( "var2 = " , DoubleToStr (var2, 5 )); // Выход: var2=0.1234 6
 
paladin80 :

이 기능은 촛불이 나타나는 순간만을 결정합니다. iOpen 을 사용하여 시작 가격을 찾으십시오. 이 같은:


감사합니다 많은 도움이 되었습니다
 
okvseok :

말해주세요!

한 장씩 인쇄가 가능하지만 특정 날짜부터 특정 날짜 이전까지 인쇄가 시작되도록 설정하는 방법입니다. 한 번에 한 장씩 인쇄하지 마십시오.

고맙습니다!



무시하다)
 
안녕하세요! 알다시피, 뭔가 스크립트가 작동하지 않습니다. 나는 차트에 던졌습니다(드래그) - 아무 일도 일어나지 않습니다.
 
시작은 매 틱마다 필연적으로 수행되지만 필요한 조건을 제공할 수 있습니다.
 
안녕하세요! 알다시피, 뭔가 스크립트가 작동하지 않습니다. 그래프에 던지고(드래그) 아무 일도 일어나지 않습니다. 사용 방법??
 //+------------------------------------------------------------------+
//|                                                      Покупка.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
for ( int i= 0 ;i<= OrdersTotal ();i++){
   if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true)
 { if ( OrderSymbol () != Symbol ()) continue ; 
   if ( OrderType ()==OP_SELL) 
   OrderClose ( OrderTicket (), OrderLots (),Ask, 6 , Red );
   if ( OrderType ()==OP_BUY)
   OrderClose ( OrderTicket (), OrderLots (),Bid, 6 , Red );
   if ( OrderType ()>= 2 )
   OrderDelete ( OrderTicket ());}} 
//----
   for (i= 0 ;i< 23 ;i++){
     Sleep ( 2000 ); RefreshRates (); if (! IsTradeAllowed ()) continue ;
     int tiket= OrderSend ( Symbol (),OP_BUY, 0.1 ,Ask, 6 , 0 , 0 , "Skript" , 98600 , 0 , Blue );
   if ( tiket!=- 1 ) break ;
   if (tiket==- 1 ){ int Error= GetLastError ();  
             string errorcomment = "Ошибка открытия  ордера OP_BUY"   + " " + Symbol () +   " " + ErrorDescript(Error); 
             Print (errorcomment);}}
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+

//------- :  Коды ошибок
string ErrorDescript( int error_code){ string error_string; switch (error_code){
       //---- Коды ошибок, возвращаемые торговым сервером:
       case 0 :   error_string= "Нет ошибок" ;                                                                                             break ;
       case 1 :   error_string= "Нет ошибки, но результат неизвестен" ;                                                                     break ;
       case 2 :   error_string= "Общая ошибка" ;                                                                                           break ;
       case 3 :   error_string= "Неправильные параметры" ;                                                                                 break ;
       case 4 :   error_string= "Торговый сервер занят" ;                                                                                   break ;
       case 5 :   error_string= "Старая версия клиентского терминала" ;                                                                     break ;
       case 6 :   error_string= "Нет связи с торговым сервером" ;                                                                           break ;
       case 7 :   error_string= "Недостаточно прав" ;                                                                                       break ;
       case 8 :   error_string= "Слишком частые запросы" ;                                                                                 break ;
       case 9 :   error_string= "Недопустимая операция нарушающая функционирование сервера" ;                                               break ;
     
 
paladin80 :

정규화 후 숫자가 변경됩니다. 예를 들면 다음과 같습니다.

또 다른 것은 DoubleToStr을 사용하여 인쇄할 때입니다. 예를 들면 다음과 같습니다.

그리고 정규화 후 출력하면 다음과 같이 됩니다.


고맙습니다.
 

안녕하세요.

마지막 2개 매수 포지션의 총 이익만 계산 하면 됩니다. 코드를 변경하는 방법?

 double profits_buy_2pos()
{
   double pr_buy = 0 ;
   int cnt = 0 ;
   int OpenOrders= OrdersTotal ();
   for (cnt= 0 ;cnt<OpenOrders;cnt++)   // scan all orders and positions. ..
   {
     OrderSelect (cnt, SELECT_BY_POS);
           if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==magic && OrderType () == OP_BUY)
          {     
           if ( OrderType ()==OP_BUY) 
          {
            pr_buy+= OrderProfit ();
          } 
          }                               
   } 
return (pr_buy);   
}