오류, 버그, 질문 - 페이지 623

 
MetaDriver :
지금 당신은 확실히 무례할 것입니다 ... :))

아마도,

문제의 본질을 파악했지만 각 표시기에 타이머를 설정해야 하는 이유와 실제로 이 표시기가 왜 있는지 이해가 되지 않습니다.

어드바이저의 타이머에서 필요한 상품의 입찰가를 직접 수신할 수 있다면? 공통 어셈블리에 저장하고,

이 변형에서는 불연속성이 순서대로 표시되고 표시기가 있는 변형에서는 동기화되지 않은 데이터 스트림이 있습니다.

스파이에게는 또 다른 문제입니다. 모든 도구에 대한 주기와 이벤트가 없고 오래 지속되지 않거나 하나씩 똑딱 거리기 때문입니다.

그건 그렇고, 마지막 가격이 있는 거래에서 Bid 데이터가 항상 사용 가능한 것은 아니므로 확인을 통해 Bid, 그렇지 않은 경우 Last를 작성합니다.

 

MetaDriver :

나는 타협을 제안합니다. 당신은 스파이로 진드기를 잡아 즉시 밀리초 표시와 함께 수석 전문가 고문에게 보냅니다(GetTickCount()). Expert Advisor는 표시에 따라 정렬하고 두 번째 블록을 자릅니다.

쉽지는 않지만 정확성이 있으면 질서가 있을 것입니다.

나쁘지 않은 옵션입니다. 제 생각에는 기초로 삼을 가치가있는 유일한 것입니다.

우크라이나 :

그건 그렇고, 마지막 가격이 있는 거래에서 Bid 데이터가 항상 사용 가능한 것은 아니므로 확인을 통해 Bid, 그렇지 않은 경우 Last를 작성합니다.

좋은 설명, 나는 이것을 접하지 못했습니다. 고려해야 할 것입니다.
 

MetaDriver :

Предлагаю компромисс: ловишь тики шпионами и сразу отправляешь в головной эксперт, снабдив милисекундной меткой(GetTickCount()). Эксперт их упорядочивает в соответствии с метками и нарезает секундные блоки.

Не очень просто, зато с точностью будет порядок.

흥미로운 :

나쁘지 않은 옵션입니다. 제 생각에는 기초로 삼을 가치가있는 유일한 것입니다.

좋은 설명, 나는 이것을 접하지 못했습니다. 고려해야 할 것입니다.

이 옵션은 나쁘지 않을 수 있으며 터미널에 틱을 보내는 메커니즘만 없습니다. 16쌍에 대해 5-10틱/초로 추정합니다. 다시 한 번, 그것은 이미 끝났습니다))

그리고 그러한 정확도는 필요하지 않습니다. 1초면 충분합니다.

일반적으로 감사합니다. 이 주제는 끝났습니다.

 

문제는 분 단위 기록이 아직 유지되지 않은 먼 역사적 과거의 더 높은 시간 프레임의 막대를 분 막대로 대체하는 것과 관련하여 매우 불쾌합니다. 솔루션 중 가짜 막대를 실제 막대로 복잡한 변환 만 염두에두고 이것은 정확성을 보장하지 않습니다. 그러한 변환의 정확성에 대한 의심만큼 복잡성에 대한 것입니다.

초기 작업은 구축 중인 피보나치 시간대 의 관련성을 확인하는 것입니다. 영역이 너무 멀고 모든 하위 영역의 작업 너비(기본적으로 최대 34개의 기본 너비 단위)가 전체가 너무 좁아서 오른쪽 테두리가 현재 순간에 도달하지 않으면 빌드하지 않습니다. 그렇지 않으면 차트에 개체를 만듭니다. 두 가지 유사한 방법으로 해결하려고 시도했는데 그 중 하나가 제가 제공합니다. 유일한 차이점은 첫 번째 방법에서 내가 사용하여 이야기의 시작 부분부터 춤을 추었다는 것입니다.

   datetime firstDate=( datetime ) SeriesInfoInteger ( _Symbol , _Period , SERIES_FIRSTDATE );
그리고 두 번째에서는 반대로 (나는이 방법을 제공합니다) 본질과 결과는 전혀 변하지 않습니다. NZD/USD 에서 테스트되었습니다.

당신의 가짜 이야기가 나와 같은 2009년이 아니라 다른 날짜에 끝난다면 이 두 Fibo 시간대 중 하나가 이 전환점을 통과하고 두 번째 시간대가 이미 완전히 이야기의 오른쪽에 있도록 재정렬하십시오. , 모든 막대가 실제입니다. 이 경우 스크립트에서 startTime1, endTime1 값을 변경하고 필요한 경우 startTime2, endTime2도 변경하는 것을 잊지 마십시오. 가격은 조정할 수 없습니다 - 원칙이 없습니다. 이제 테스트할 수 있습니다 ... 결과는 슬프게 될 것입니다. 두 시간대에 대해 동일한 확인 알고리즘을 사용하면 역사적으로 오른손잡이 영역에 대해서만 올바르게 작동하고 전환점 앞에 한 발이 있고 전환점 이후에 다른 발이 있는 경우에만 올바르게 작동합니다. , 알고리즘 은 잘못 필터링 하여 빌드 를 허용 하지 않습니다 . 두 영역은 서로 매우 가깝고 너비가 비슷하며 이 두 너비는 먼 미래로 확장되어 오랫동안 관련이 있을 것입니다. 사실 둘 다 필터링되어서는 안 됩니다(조건을 주석 처리하고 두 시간대가 모두 구축되었음을 알 수 있습니다).

 void OnStart ()
  {
   datetime startTime1= D'2009.07.08 18:00:00' ;
   datetime endTime1= D'2009.11.03 12:17:00' ;
   datetime startTime2= D'2009.06.30 08:00:00' ;
   datetime endTime2= D'2009.10.21 20:16:00' ;

   double startPrice1= 0.61930 ;
   double endPrice1= 0.70948 ;
   double startPrice2= 0.65470 ;
   double endPrice2= 0.76300 ;

   int FTZ1pos1,FTZ2pos1,bandwidth;
   datetime Arr[],time1;

   CopyTime ( _Symbol , PERIOD_M1 , 0 , 1 ,Arr);
   time1=Arr[ 0 ];

   FTZ1pos1= CopyTime ( _Symbol , PERIOD_M1 ,time1,startTime1,Arr);
   bandwidth= CopyTime ( _Symbol , PERIOD_M1 ,endTime1,startTime1,Arr)*( 34 + 2 ); // +2 - небольшой запас общей ширины
                                                                         // зоны на всякий случай

   if (FTZ1pos1<=bandwidth)
      ObjectCreate ( 0 , "FTZ1" , OBJ_FIBOTIMES , 0 ,
                   startTime1,startPrice1,
                   endTime1,endPrice1
                  );


// ---
   FTZ2pos1= CopyTime ( _Symbol , PERIOD_M1 ,time1,startTime2,Arr);
   bandwidth= CopyTime ( _Symbol , PERIOD_M1 ,endTime2,startTime2,Arr)*( 34 + 2 ); // +2 - небольшой запас общей ширины
                                                                         // зоны на всякий случай

   if (FTZ2pos1<=bandwidth)
      ObjectCreate ( 0 , "FTZ2" , OBJ_FIBOTIMES , 0 ,
                   startTime2,startPrice2,
                   endTime2,endPrice2
                  );
  }

원하는 결과: 2개의 Fibo 시간대가 있어야 합니다.

첫 번째 0 베이스 라인과 두 번째 0 베이스 라인 사이 어딘가에 가짜 분 막대와 실제 분 막대를 구분하는 전환점이 있습니다.

막대 수 계산을 거부하고 모든 날짜를 날짜로 계산하면 주말(+/- 시장 마감/개방 시간), 휴일 등을 빼야 하므로 원하는 정확도를 얻을 수 없습니다. ., 1분 이상 진드기가 없을 때 막대를 건너뛰고 시간 척도와 불일치하는 것은 물론이고 일반적으로 조용히 지냅니다.

신뢰할 수 있는 솔루션으로 무엇을 추천하시겠습니까?

 

EA에서 파일을 로드하는 동안 오류가 발생했습니다. 범주에서 10가지 차이점을 찾으십시오. 첫 번째 코드는 스크립트와 관련된 것이고 두 번째는 EA와 관련된 것으로 Ctrl-C Ctrl-V와 동일합니다. 코드는 스크립트에서 작동하지만 EA에서는 작동하지 않습니다.

 #include <\\MyClass\RegulFind-v1- 1 .mqh>
#include <Trade\Trade.mqh>
int hMa,hRsi ;
double mMa[],mRsi[];                             
Kohonen  koh;
CTrade trade ;
void OnStart ()
  {
   koh.LoadMap( "KitMaRsi.csv" ) ;
   hMa= iMA ( _Symbol , Period (), 10 , 0 , MODE_EMA , PRICE_CLOSE ) ;
   if (hMa == INVALID_HANDLE )
       Print ( "Ошибка загрузки машки====================== " , GetLastError ());
   hRsi= iRSI ( _Symbol , Period (), 10 , PRICE_CLOSE );
   if (hRsi == INVALID_HANDLE )
       Print ( " Ошибка загрузки РСИ ==========" );   
   
  }
 #include <\\MyClass\RegulFind-v1- 1 .mqh>
#include <Trade\Trade.mqh>
int hMa,hRsi ;
double mMa[],mRsi[];                             
Kohonen  koh;
CTrade trade ;
int OnInit ()
  {
   koh.LoadMap( "KitMaRsi.csv" ) ;
   hMa= iMA ( _Symbol , Period (), 10 , 0 , MODE_EMA , PRICE_CLOSE ) ;
   if (hMa == INVALID_HANDLE )
       Print ( "Ошибка загрузки машки====================== " , GetLastError ());
   hRsi= iRSI ( _Symbol , Period (), 10 , PRICE_CLOSE );
   if (hRsi == INVALID_HANDLE )
       Print ( " Ошибка загрузки РСИ ==========" );   
   return ( 0 );
  }
 
ivandurak :

EA에서 파일을 로드하는 동안 오류가 발생했습니다. 범주에서 10가지 차이점을 찾으십시오. 첫 번째 코드는 스크립트와 관련된 것이고 두 번째는 EA와 관련된 것으로 Ctrl-C Ctrl-V와 동일합니다. 코드는 스크립트에서 작동하지만 EA에서는 작동하지 않습니다.

테스터에는 다른 파일 샌드박스가 있습니다. Expert Advisor가 일반적인 방식으로 테스터에서 하나의 *.csv 파일로 작업하도록 하려면 공통 디렉토리에 넣고 FILE_COMMON 수정자로 파일을 엽니다.


추신 공통(공통) 폴더에 넣으려면
FILE_COMMON 수정자로 파일을 작성하거나 다음과 같은 것을 찾아야 합니다(XP의 경우 옵션):

C:\Documents and Settings\All Users\Application Data\MetaQuotes\Terminal\Common\Files\



 
x100intraday :

신뢰할 수 있는 솔루션으로 무엇을 추천하시겠습니까?

MT4로 돌아갑니다.

나는이 문제의 미래에 대해 개발자 에게 문의했고 그들은 침묵을 지켰습니다. 그래서 개인적으로 전망은 이해할 수 없습니다.

 

어떻게 든 스위치는 기호 변수와 함께 작동하지 않습니다 ...

대신에:

 string type = "Buy" ;

switch (type)
{
case "Buy" : {direction = ORDER_TYPE_BUY ;  price = SymbolInfoDouble (zSymbol, SYMBOL_ASK ); break ;}
case "Sell" : {direction = ORDER_TYPE_SELL ; price = SymbolInfoDouble (zSymbol, SYMBOL_BID ); break ;}
default : { return (lot_value);}
}

'유형' - 잘못된 스위치 식 유형
'구매' - 상수 표현식은 정수가 아닙니다.

다음과 같이 그려야 합니다.

 if (zShift == "Buy" )  {direction = ORDER_TYPE_BUY ;  price = SymbolInfoDouble (zSymbol, SYMBOL_ASK );}
if (zShift == "Sell" ) {direction = ORDER_TYPE_SELL ; price = SymbolInfoDouble (zSymbol, SYMBOL_BID );}
if (zShift != "Buy" || zShift != "Sell" ) { return (lot_value);}

너무 명확하고 비뚤어지지 않습니다.

다른 언어로 된 롤...

다르게 써야 하나요?

 
awkozlov :

어떻게 든 스위치는 기호 변수와 함께 작동하지 않습니다 ...


문서는 말합니다 (강조 광산) - switch 문 :

모든 경우에 식의 값을 상수와 비교하고 식의 과 일치하는 연산자에 제어를 전달합니다. 각 케이스 케이스 는 정수 상수 , 문자 상수 또는 상수 표현식으로 표시될 수 있습니다. 상수 표현식은 변수나 함수 호출을 포함할 수 없습니다. switch 문 표현식 정수 유형이어야 합니다.

 
awkozlov :

다른 언어로 된 롤...

다른 사람에게 굴러가는 것이 특징입니다. 스위치는 원래 통합 유형 전용으로 설계되었습니다. 여기에는 그런 기능이 없습니다.