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

 
drknn :


프로그래밍 방식으로 레벨 가격을 요청해야 합니다. 이렇게 하려면 먼저 차트에 놓고 "Fibo" 개체를 (모두 프로그래밍 방식으로) 구성해야 합니다. 그것은 언뜻보기에 보이는 것처럼 간단하지 않습니다. 그러나 냄비를 태우는 것은 신이 아닙니다. 나는 또한 어떻게든 Fibo 수준을 만지작거려야 했습니다. 그리고 지금은 이러한 수준의 처리로 주문을 하고 있습니다. 일반적으로 원하는 경우 알아낼 수 있습니다.

다음은 차트에 fibo를 생성하는 코드의 예입니다.

레벨 가격을 요청하려면 서브루틴을 만들어야 했습니다. 여기 있습니다(무엇이 무엇인지 알아내고 싶다면)

저것들. 피보나치 팬에 대해 프로그래밍 방식으로 fibo 개체를 추가해야 하며 이 방법을 통해서만 레벨의 가격을 알아낼 수 있습니다. 제가 제대로 이해한건가요?
 
fury2006 :
저것들. 피보나치 팬에 대해서도 프로그래밍 방식으로 fibo 개체를 추가해야 하며 이 방법을 통해서만 레벨의 가격을 알아낼 수 있습니다. 제가 제대로 이해한건가요?
차트에 표준 fibo 개체를 걸 필요는 없습니다. 기존 조건을 기반으로 모든 fibo 수준을 프로그래밍 방식으로 간단히 계산할 수 있습니다.
변수 또는 배열에 입력하고 가격을 귀하가 계산한 이러한 수준과 비교하십시오. 이것이 내가하는 방법입니다 ... 비록 - 모든 것이 IMHO입니다.
 
artmedia70 :
차트에 표준 fibo 개체를 걸 필요는 없습니다. 기존 조건을 기반으로 모든 fibo 수준을 프로그래밍 방식으로 간단히 계산할 수 있습니다.
변수 또는 배열에 입력하고 가격을 귀하가 계산한 이러한 수준과 비교하십시오. 이것이 내가하는 방법입니다 ... 비록 - 모든 것이 IMHO입니다.
샘플 코드를 작성해 주시겠습니까?
 
fury2006 :
샘플 코드를 작성해 주시겠습니까?
그리고 그것은 블라디미르가 당신에게 제안한 것보다 더 어려울 것입니다 ... :))
 
artmedia70 :
그리고 그것은 블라디미르가 당신에게 제안한 것보다 더 어려울 것입니다 ... :))
글쎄, 어쩌면 나는 그것을 더 좋아할 것입니다. :) 게다가 추가의 존재는 바람직하지 않습니다. 화면의 개체. 거기에는 많은 물체가 있을 것이고 여분의 물체는 방해만 할 것입니다.
 
fury2006 :
글쎄, 어쩌면 나는 그것을 더 좋아할 것입니다. :) 게다가 추가의 존재는 바람직하지 않습니다. 화면의 개체. 거기에는 많은 물체가 있을 것이고 여분의 물체는 방해만 할 것입니다.

내 코드는 작성된 바로 그 Expert Advisor가 받은 데이터와 밀접하게 연결되어 있습니다. 이 기능은 필요한 계산의 일부일 뿐이며 실제적인 가치는 없습니다. 단지 자기 이해를 위한 교육 보조 도구일 뿐입니다. 그런 다음 나머지 코드와 함께 모든 예비 계산이 수행됩니다.

유니버셜로 하면 더 느려지겠지만, 도저히 감당이 안되네요... :)

그러나, 제발. 이 함수는 계산을 확인한 Excel에서 다시 작성되었습니다. 두 개의 매개변수가 전달됩니다. 지그재그 브레이크(오픈 위치 유형에 따라 더 낮거나 높음)와 23.6 fibs의 새로운 수준입니다. fiba는 일반적인 방식으로 구축되지는 않지만 가격이 23.6 fiba 수준을 돌파했으며 미리 계산된 통합 수준보다 높은 것으로 믿어집니다. fib의 0은 ZZ의 break에 배치되고 23.6(break through)에 포즈가 열립니다. 나머지 수준은 글로벌 수준에서 선언된 변수에 입력되고 이후에 주문 회계 배열에 입력되며, 이 배열에서 모든 미결 위치 에 대한 수준을 가져옵니다.

 //=========================================================================================================
void CalcFiboLevel( double priceZZ, double price23)   // Рассчитывает уровни Фибы по нулевому и 23.6 значениям цен
{
   double A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,
          B2,B3,B4,B5,B6,B7,B8,B9,B10,B11;
   
   A2 = 0 ;                                       // Уровни фибы  
   A3 = 23.6 ;
   A4 = 38.2 ;
   A5 = 50.0 ;
   A6 = 61.8 ;
   A7 = 78.6 ;
   A8 = 100.0 ; 
   A9 = 161.8 ;  
   A10= 261.8 ; 
   A11= 423.6 ;    
   B2 = priceZZ;                                 // Цена нулевого уровня фибы (нижний/верхний перелом ЗигЗага)
   B3 = price23;                                 // Цена уровня 23.6 фибы (цена открытия позы)
   B4 = ((B3-B2) *(A4-A2) +(A3-A2) *B2)/(A3 -A2);
   B5 = ((B4-B3) *(A5-A3) +(A4-A3) *B3)/(A4 -A3);
   B6 = ((B5-B4) *(A6-A4) +(A5-A4) *B4)/(A5 -A4);
   B7 = ((B6-B5) *(A7-A5) +(A6-A5) *B5)/(A6 -A5);
   B8 = ((B7-B6) *(A8-A6) +(A7-A6) *B6)/(A7 -A6);
   B9 = ((B8-B7) *(A9-A7) +(A8-A7) *B7)/(A8 -A7);
   B10= ((B9-B8) *(A10-A8)+(A9-A8) *B8)/(A9 -A8);
   B11= ((B10-B9)*(A11-A9)+(A10-A9)*B9)/(A10-A9);
   
   
   Fibo38_Price  = B4;                         // ((B3-B2)*(A4-A2)+(A3-A2)*B2)/(A3-A2)
   Fibo50_Price  = B5;                         // ((B4-B3)*(A5-A3)+(A4-A3)*B3)/(A4-A3)
   Fibo61_Price  = B6;                         // ((B5-B4)*(A6-A4)+(A5-A4)*B4)/(A5-A4)
   Fibo78_Price  = B7;                         // ((B6-B5)*(A7-A5)+(A6-A5)*B5)/(A6-A5)
   Fibo100_Price = B8;                         // ((B7-B6)*(A8-A6)+(A7-A6)*B6)/(A7-A6)
   Fibo161_Price = B9;                         // ((B8-B7)*(A9-A7)+(A8-A7)*B7)/(A8-A7)
   Fibo261_Price = B10;                         // ((B9-B8)*(A10-A8)+(A9-A8)*B8)/(A9-A8)
   Fibo423_Price = B11;                         // ((B10-B9)*(A11-A9)+(A10-A9)*B9)/(A10-A9)

   return ;
}

그러나 그것을 사용하려면 전체 고문을 제거해야 명확 해집니다 ...

 
artmedia70 :

내 코드는 작성된 바로 그 Expert Advisor가 받은 데이터와 밀접하게 연결되어 있습니다. 이 기능은 필요한 계산의 일부일 뿐이며 실제적인 가치는 없습니다. 단지 자기 이해를 위한 교육 보조 도구일 뿐입니다. 그런 다음 나머지 코드와 함께 모든 예비 계산이 수행됩니다.

유니버셜로 하면 더 느려지겠지만, 도저히 감당이 안되네요... :)

그러나, 제발. 이 함수는 계산을 확인한 Excel에서 다시 작성되었습니다. 두 개의 매개변수가 전달됩니다. 지그재그 브레이크(오픈 위치 유형에 따라 더 낮거나 높음)와 23.6 fibs의 새로운 수준입니다. fiba는 일반적인 방식으로 구축되지는 않지만 가격이 23.6 fiba 수준을 돌파했으며 미리 계산된 통합 수준보다 높은 것으로 믿어집니다. fib의 0은 ZZ의 break에 배치되고 23.6(break through)에 포즈가 열립니다. 나머지 수준은 글로벌 수준에서 선언된 변수에 입력되고 이후에 주문 회계 배열에 입력되며, 이 배열에서 모든 미결 위치에 대한 수준을 가져옵니다.

그러나 그것을 사용하려면 전체 고문을 제거해야 명확 해집니다 ...

굉장합니다, 당신은 나에게 아이디어를 주었다
 

여러분, 안녕하세요! 다음 항목을 결합하도록 도와주세요. 결과적으로 가격 뒤에 두 줄, Ask by 20p 아래에 하나가 표시되어야 합니다.

다른 하나는 더 높으며 가격이 20p 변할 때 가청 신호도 제공됩니다. 1틱 동안.

따로따로 다 똑똑하게 작동하는데 합칠수가 없네요. 미리 감사드립니다!

1) 20p까지 문의하기 아래에 있습니다.

 //+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int start()
{
ObjectCreate ( "MyPriceLine" , OBJ_HLINE , 0 , 0 , Ask- 20 * Point ) ;
ObjectSet( "MyPriceLine" , OBJPROP_PRICE1, Ask- 20 * Point );
return ( 0 );
}

//+------------------------------------------------------------------+

2) 라인은 20p까지 요청 위에 있습니다.

 //+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int start()
{
ObjectCreate ( "MyPriceLine" , OBJ_HLINE , 0 , 0 , Ask+ 20 * Point ) ;
ObjectSet( "MyPriceLine" , OBJPROP_PRICE1, Ask+ 20 * Point );
return ( 0 );
}

//+------------------------------------------------------------------+

3) 시간 경과 에 따른 가격 변화율 .

 #property show_inputs

extern int pips= 2 ; //изменение аск
extern double Time_= 0.1 ; //c. ~ tick
extern bool все_из_обзора_рынка=true; // только текущий символ - false

int i, l, p, количество_символов;
string val[], на_экран;
int Ask_save[];

//+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
void start(){
количество_символов=SymbolsList(val, true); //запись в массив val инструменты и их количество вызов функции SymbolsList
ArrayResize (Ask_save,количество_символов);
if (количество_символов == - 1 ){ Alert ( "Ошибка открытия файла в SymbolsList(string &Symbols[], bool Selected)" ); return ;}
if (!все_из_обзора_рынка){
количество_символов= 1 ;
ArrayResize (Ask_save,количество_символов);
ArrayResize (val,количество_символов);
val[ 0 ]= Symbol ();
}

while (true&&! IsStopped ()){ //если разрешить и не отанавливать скрипт продолжим

Alert ( "пересчитаем через " +Time_+ " сек." );

for (i= 0 ;i<количество_символов;i++){ //посчитаем стоимость спреда для инструментов из обзора рынка
if ((Ask_save[i]-MarketInfo(val[i],MODE_ASK)/MarketInfo(val[i],MODE_POINT))>=pips){
Alert (val[i]+ "," + Period ()+ " изменился вниз на " +DoubleToStr((Ask_save[i]-MarketInfo(val[i],MODE_ASK)/MarketInfo(val[i],MODE_POINT)), 0 )+ " pips" );
PlaySound ( "timeout.wav" );
}
if ((MarketInfo(val[i],MODE_ASK)/MarketInfo(val[i],MODE_POINT)-Ask_save[i])>=pips){
Alert (val[i]+ "," + Period ()+ " изменился вверх на " +DoubleToStr((MarketInfo(val[i],MODE_ASK)/MarketInfo(val[i],MODE_POINT)-Ask_save[i]), 0 )+ " pips" );
PlaySound ( "email.wav" );
}
Ask_save[i]=MarketInfo(val[i],MODE_ASK)/MarketInfo(val[i],MODE_POINT);
}
Sleep (Time_* 1000 ); //пауза сек.
}

/*
количество_символов=SymbolsList(val, true);//запись в массив val инструменты и их количество вызов функции SymbolsList
if(количество_символов == -1){ Alert("Ошибка открытия файла в SymbolsList(string &Symbols[], bool Selected)"); return;}

while(true&&!IsStopped()){ //если разрешить и не отанавливать скрипт продолжим
на_экран="\r\n"; //отступ
for(i=0;i<количество_символов;i++)//посчитаем стоимость спреда для инструментов из обзора рынка
на_экран=на_экран+val[i]+" стоимость спреда = " + DoubleToStr(MarketInfo(val[i],MODE_SPREAD)*MarketInfo(val[i],MODE_TICKVALUE),0)+"\r\n";
Comment(на_экран);//выведем на экран
Alert("Пересчитаем");//сигнал
Sleep(3000);//пауза 3 сек.
}
*/
}
void deinit(){ Comment ( "" );}
//+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=


//+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
// функция читает из обзора рынка все фин.инстр.
//+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
int SymbolsList( string &Symbols[], bool Selected){
int Offset, SymbolsNumber; string SymbolsFileName;
if (Selected) SymbolsFileName = "symbols.sel" ; else SymbolsFileName = "symbols.raw" ;
int hFile = FileOpenHistory(SymbolsFileName, FILE_BIN | FILE_READ );
if (hFile < 0 ) return (- 1 ); if (Selected) { SymbolsNumber = ( FileSize (hFile) - 4 ) / 128 ; Offset = 116 ; }
else { SymbolsNumber = FileSize (hFile) / 1936 ; Offset = 1924 ; }
ArrayResize (Symbols, SymbolsNumber);
if (Selected) FileSeek (hFile, 4 , SEEK_SET );
for ( int i = 0 ; i < SymbolsNumber; i++){Symbols[i] = FileReadString (hFile, 12 ); FileSeek (hFile, Offset, SEEK_CUR );}
FileClose (hFile);
return (SymbolsNumber);
}
 

이 코드가 때때로 한 곳에서 멈추는 이유를 설명하고 다시 시작하려면 터미널을 다시 시작해야 합니까?

 int ticket,err;
         Alert ( "nachalo" );
         ticket = OrderSend ( Symbol (), OP_BUY, 1 , Ask, 10 , 0 , 0 , "dsgdsf" , 0 , 0 , CLR_NONE );
         err = GetLastError ();
         Alert (err);
         Alert ( "konec" );
         OrderClose (ticket, 1 ,Bid, 5 , CLR_NONE );
         Alert ( "zakrito" );
 
globad :

여러분, 안녕하세요! 다음 항목을 결합하도록 도와주세요. 결과적으로 가격 뒤에 두 줄, Ask by 20p 아래에 하나가 표시되어야 합니다.

다른 하나는 더 높으며 가격이 20p 변할 때 가청 신호도 제공됩니다. 1틱 동안.

따로따로 다 똑똑하게 작동하는데 합칠수가 없네요. 미리 감사드립니다!

1) 20p까지 질문 아래에 있습니다.

2) 20p까지 물어보기 위의 라인입니다.

3) 시간 경과에 따른 가격 변화율.


벌써 지쳐가는 듯... 초급, 왓슨:

 ObjectCreate ( "MyPriceLine" , OBJ_HLINE , 0 , 0 , Ask- 20 * Point ) ;

이것은 한 줄의 이름입니다.

힌트: 두 번째 줄의 이름을 보십시오. 처음과 다른가요?

그리고 왜 지속적으로 이미 구축된 객체 를 구축합니까?

 //+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int start()
{
ObjectCreate ( "MyPriceLine" , OBJ_HLINE , 0 , 0 , Ask+ 20 * Point ) ;
ObjectSet( "MyPriceLine" , OBJPROP_PRICE1, Ask+ 20 * Point );
return ( 0 );
}

//+------------------------------------------------------------------+

이제 차이점을 살펴보십시오.

 //+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int start()
{
if ( ObjectFind ( "MyPriceLine" )< 0 ) ObjectCreate ( "MyPriceLine" , OBJ_HLINE , 0 , 0 , Ask+ 20 * Point ) ;
ObjectSet( "MyPriceLine" , OBJPROP_PRICE1, Ask+ 20 * Point );
return ( 0 );
}

//+------------------------------------------------------------------+