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

 
차트의 요청은 RefreshRates가 아니라 CopyRates ArrayCopySeries와 유사합니다. CopyRates 는 유일한 비 거래 서버 흔들기 기능입니다.
 
Zhunko :
차트가 열리고 업데이트되면 새 데이터에 대한 요청이 서버로 전송됩니다. 일부 탐욕스러운 DC는 더 강력한 서버와 더 넓은 채널에 돈을 쓰지 않고 주머니에 넣는 것을 선호합니다. 약한 서버가 "중단"되지 않도록 터미널의 요청 수를 제한해야 합니다. MRC에는 하루에 2000개의 요청만 있습니다. 이는 거래 요청을 제외하고 상품 수에 TF 수를 곱한 것보다 10배 적습니다.
글쎄, 그것은 당신이 그런 요리를 피해야한다는 것을 의미합니다. MRC에 대해 처음으로 부정적인 소식을 듣게 됩니다. 여기에서는 터미널 또는 모두 동일한 기능(거래 제외)이 서버에 액세스하는 것만을 명확히 하는 것이 남아 있습니다. 나는 지원하기 위해 이 질문을 했습니다. 뿐만 아니라 모든 것이 제자리에 빠지고 터미널 만 있으면 일반적으로 터미널이 시작된 것이 일반적으로 터무니없고 서버에 접속하여 견적을 업데이트하면 거래없이 한도를 초과하게됩니다. 제 생각에는 이것으로는 충분하지 않은데 빅터가 말했듯이 트레이딩을 제외하고는 서버에 접근하지 않는 기능입니다.

준코 :

MQL4에 포함하면 코드를 구성하는 데 도움이 됩니다. 예를 들어, 이것은 3000줄에 대한 내 표시기의 모양입니다.

사실은 라이브러리를 보았고 문서에서도 일반적으로 선언하는 코드의 맨 위에 전역 변수 가 선언되어 있다고 나와 있습니다. 포함에 함수가 있는 경우 내 생각에는 전역 변수가 선언된 위치에 실제로 포함된 결과로 함수가 있고 옵션으로 어떻게든 변수가 있다고 상상하는 것은 이상합니다. . 코드는 그렇게 작성되지 않습니다. Expert Advisor에서 사용하는 변수와 외부 사용자 변수를 맨 위에 선언하면 아무도 그 옆에 기능을 배치하지 않습니다! 하지만 그 안에 기능이 있는 include가 놓여있고, 이것은 내가 이해하기로는 정상적인 것으로 간주된다. 이것이 나를 가장 혼란스럽게 만드는 것입니다.

어찌보면 말이 안되는...

한편, 내포물이 어딘가에 배치되는 경우. 예를 들어 어떤 기준에 따라 거래 신호를 수신하는 역할을 하는 여러 기능 대신 논리적이고 읽기 쉬운 순간이 될 것입니다.

준코 :

불행히도 컴파일러는 동일한 모듈에서 단일 포함을 두 번 이상 사용하는 것을 허용하지 않습니다. 이것은 일반적으로 반복적인 코드를 절약합니다.

글쎄, 이것은 이미 사소한 일입니다. 결국 중요한 것은 주요 코드에서 주요 성가신 기능과 코드 조각을 제거하고 포함을 통해 호출하는 것입니다. 그리고 그 안에 이미 내가 포함시킨 함수에 접근할 수 있게 될 것이다. 함수의 이름으로... 그리고 당신은 주어진 제한이 있다는 사실에 대해 걱정할 필요가 없을 것이다.
 

좋은 오후에요 여러분.

MarketInfo( ) 및 Print ( ) 기능 학습

다음은 이러한 기능을 사용하는 간단한 코드입니다.

테스터, TF 60분

 double T ;
int start()
{
T = MarketInfo( "EURUSD" ,MODE_HIGH); // в глобальную переменную Т запоминаем максимум дневной свечи,который должна возвращать  MarketInfo ( )
Print ( " corresponds to " , T );           //
if ( T > iHigh( Symbol (), 0,10) )  // если максимум текущей дневной свечи > High свечи N10 (ТФ60 мин)
OrderSend(Symbol(),OP_SELL,0.1,Bid,1,0,0,"jfh",123 ); открыть ордер
}                                                                                                                       
return ;

ПРОБЛЕМА 1.Ордер не открывается 2.Print() постоянно возвращает 0 ПРИМЕЧАНИЕ. Для открытия ордера - мне нужной сравнивать параметры свечей разных ТФ (60 мин и 1440 мин.) Подскажите пожалуйста как это можно сделать. Спасибо.

 
Integer :
차트의 요청은 RefreshRates가 아니라 CopyRates ArrayCopySeries와 유사합니다. CopyRates는 유일한 비 거래 서버 흔들기 기능입니다.

RefreshRates()를 확인했습니다. 이 Expert Advisor가 예를 들어 EURUSD에서 실행되고 다른 도구가 설정에 삽입되면 오랫동안 열려 있지 않은 창(이력이 없음)이 표시됩니다.

 extern string Tool           = "AUDNZD" ; // Имя инструмента.
extern bool    IsRefreshRates = true ;     // Флаг включения обновления таймсерий.
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
void start()
 {
   string sTool = Tool; // Имя инструмента.
   if (Tool == "" ) sTool = Symbol ();
   while (! IsStopped ())
   {
     if (IsRefreshRates) RefreshRates();
     string sComment = StringConcatenate ( "MarketInfo()\n" ,
                                        TimeToStr(MarketInfo(sTool, MODE_TIME), TIME_DATE|TIME_MINUTES|TIME_SECONDS), "\n" ,
                                        DoubleToStr(MarketInfo(sTool, MODE_BID), Digits ), "  " , DoubleToStr(MarketInfo(sTool, MODE_ASK), Digits ),
                                         "\n\nПредопределенные переменные\n" ,
                                        TimeToStr(Time[ 0 ], TIME_DATE|TIME_MINUTES|TIME_SECONDS), "\n" ,
                                        DoubleToStr(Bid, Digits ), "  " , DoubleToStr(Ask, Digits ),
                                         "\n\nМассивы-таймсерии\n" );
     for ( int i = 0 ; i < 10 ; i++)
     {
      sComment = sComment + StringConcatenate (TimeToStr(iTime(sTool, 0 , i), TIME_DATE|TIME_MINUTES|TIME_SECONDS), "  " ,
                                              DoubleToStr(iOpen(sTool, 0 , i), Digits ), "  " ,
                                              DoubleToStr(iLow(sTool, 0 , i), Digits ), "  " ,
                                              DoubleToStr(iHigh(sTool, 0 , i), Digits ), "  " ,
                                              DoubleToStr(iClose(sTool, 0 , i), Digits ), "  " ,
                                              DoubleToStr(iVolume(sTool, 0 , i), 0 ), "\n" );
     }
     Comment (sComment);
     Sleep ( 300 );
   }
 }

그럼에도 불구하고 RefreshRates()는 서버를 호출하고 기록을 펌핑합니다. 결과적으로 역사의 도래를 통제할 필요가 있다.

그리고 지원에서 그들은 단일 기능이 서버에 직접 액세스하지 않는다고 말할 것입니다. 마찬가지로 모든 것이 터미널을 통해 이루어집니다 :-)

 
TarasBY :
GetProfitFromDateInCurrency() 를 사용하는 경우(원본은 중요: 귀하의 버전에서 "선택"할 수 있는 것이 무엇인지 모르겠습니다), 다음과 같이 호출해야 합니다.

함수는 오늘 시작 이후 마감된 주문에 대해 이익을 반환합니다.

그리고 코드의 모든 넌센스는 Print()를 통해 포착됩니다.


작동하지 않습니다. 전체 이력에 대한 거래에 대해 사용 가능한 모든 이익을 제공합니다.

여기에 원래 기능이 있으며 자연스럽게 아무 것도 변경하지 않았습니다.

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает суммарный профит в валюте депозита                  |
//|             закрытых с определённой даты позиций                           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента             (""   - любой символ,         |
//|                                               NULL - текущий символ)       |
//|    op - операция                             (-1   - любая позиция)        |
//|    mn - MagicNumber                          (-1   - любой магик)          |
//|    dt - Дата и время в секундах с 1970 года  ( 0   - с начала истории)     |
//+----------------------------------------------------------------------------+
double GetProfitFromDateInCurrency( string sy= "" , int op=- 1 , int mn=- 1 , datetime dt= 0 )
{
   double p= 0 ;
   int     i, k=OrdersHistoryTotal();

   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) {
       if ((OrderSymbol()==sy || sy== "" ) && (op< 0 || OrderType()==op)) {
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
           if (mn< 0 || OrderMagicNumber()==mn) {
             if (dt<OrderCloseTime()) {
              p+=OrderProfit()+OrderCommission()+OrderSwap();
            }
          }
        }
      }
    }
  }
   return (p);
}

여기 그녀의 도전과 인쇄물이 있습니다.

GetProfitFromDateInCurrency ( Symbol (), - 1 , - 1 , iTime ( NULL , PERIOD_D1 , 0 ));  
Print (   GetProfitFromDateInCurrency () );
 
Zhunko :

RefreshRates()를 확인했습니다. 이 Expert Advisor가 예를 들어 EURUSD에서 실행되고 다른 도구가 설정에 삽입되면 오랫동안 열려 있지 않은 창(이력이 없음)이 표시됩니다.

그럼에도 불구하고 RefreshRates()는 서버를 호출하고 기록을 펌핑합니다. 결과적으로 역사의 도래를 통제할 필요가 있다.

그리고 지원에서 그들은 단일 기능이 서버에 직접 액세스하지 않는다고 말할 것입니다. 마찬가지로 모든 것이 터미널을 통해 이루어집니다 :-)


Vadim, 나는 메이저와 엔과 십자가 이외의 다른 악기를 열어 본 적이없는 터미널에서 스크립트를 실행했습니다. 일반적으로 스크린샷은 다음과 같습니다.

아무것도 다운로드되지 않습니다, tk. 의견으로 판단하면 시장 데이터 배열이 비어 있습니다..

 
hoz :


Vadim, 나는 메이저와 엔과 십자가 이외의 다른 악기를 열어 본 적이없는 터미널에서 스크립트를 실행했습니다. 일반적으로 스크린샷은 다음과 같습니다.

아무것도 다운로드되지 않습니다, tk. 의견으로 판단하면 시장 데이터 배열이 비어 있습니다..


응. 그는 또한 자신의 EA에 RefreshRates()뿐만 아니라 MarketInfo()가 있다는 사실도 알아차리지 못했습니다.
 
Zhunko :

RefreshRates()를 확인했습니다. 이 Expert Advisor가 예를 들어 EURUSD에서 실행되고 다른 도구가 설정에 삽입되면 오랫동안 열려 있지 않은 창(이력이 없음)이 표시됩니다.

그럼에도 불구하고 RefreshRates()는 서버를 호출하고 기록을 펌핑합니다. 결과적으로 역사의 도래를 통제할 필요가 있다.

그리고 지원에서 그들은 단일 기능이 서버에 직접 액세스하지 않는다고 말할 것입니다. 마찬가지로 모든 것이 터미널을 통해 이루어집니다 :-)


폭력적인 환상의 인상적인 수준. 데이터가 일부 기호(아직 열리지 않은 기호)에만 표시되고 시장 검토에 있는 모든 기호에 대해서는 표시되지 않는 이유는 무엇입니까? RefreshRates() 함수는 일부 문자를 업데이트해야 하고 일부는 업데이트하지 않아야 한다는 까다로운 방식을 어떻게 찾았습니까?

준코, 잔소리 그만해.

 
lottamer :


작동하지 않습니다. 전체 이력에 대한 거래에 대해 사용 가능한 모든 이익을 제공합니다.

여기에 원래 기능이 있으며 자연스럽게 아무 것도 변경하지 않았습니다.

여기에 그녀의 도전과 인쇄가 있습니다

GetProfitFromDateInCurrency ( Symbol (), - 1 , - 1 , iTime ( NULL , PERIOD_D1 , 0 ));  
Print (   GetProfitFromDateInCurrency () );

괜찮습니다. 기능을 한 줄씩 "읽고" 직접 작성하면 모든 것이 제자리에 들어갈 것입니다.

함수 매개변수가 있습니다.

iTime ( NULL , PERIOD_D1 , 0 )

매일 마지막 막대 의 여는 시간 , 즉 현재 날짜가 열리기 전에 마감된 모든 위치가 계산되고 합산됩니다! 논리적인가요? 그래서 당신이 필요로하거나 가지고있는 다른 막대를 넣으십시오. 하지만 직접 보세요.

 
Integer :

응. 그는 또한 자신의 EA에 RefreshRates()뿐만 아니라 MarketInfo()가 있다는 사실도 알아차리지 못했습니다.


기타 모든 기능:


DoubleToStr(iOpen(sTool, 0, i), 숫자), " ",
DoubleToStr(iLow(sTool, 0, i), 숫자), " ",
DoubleToStr(iHigh(sTool, 0, i), 숫자), " ",
DoubleToStr( iClose (sTool, 0, i), 숫자), " ",
DoubleToStr(iVolume(sTool, 0, i), 0), "\n");

당연히 데이터가 업데이트됩니다.

사유: