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

 
Roman. :

무슨 캠프? 무슨 램? 운영 체제? 그렇게 구부리는 방법 ...이 모든 것이 얼마나 안정적으로 작동하는지 아직 알려지지 않았습니다 ...

예를 들어, 여러 통화 쌍과 경험치를 결합하여(예: 결합할 관련 쌍으로) 각각 자체 계정이 있는 58개가 아니라 29개의 터미널을 만드는 방법에 대한 질문은 고려하지 않았습니다.

캠프가 당겨지면이 문제에 대해 스케줄러로 아무것도 발명 할 필요가 없습니다 ...

하지만... :-)

그림은 물론 아름답습니다. 58 exp, 58 터미널...

적어도 내 협회는 ... 58 앵무새, 58 오렌지, 58 백만 (센트! :-)

그러나 반면에 28번가도 나쁘지 않습니다... 우리는 도시에 체인점을 가지고 있습니다: 28개의 오렌지! :-)


그것들은 Zulu 프로젝트 의 프레임워크 내에서 시작되었으며 저는 여기에서 수입이 미미하지만 2개월 만에 겨우 3달러를 벌었지만 어디서, 언제, 어떻게 비틀거리게 될지 알고 싶습니다. 36명의 Expert Advisors에 있는 센트 계정은 정기적으로 정기적으로 작동합니다. 투자된 $200 중 현재 150개가 기금에 있지만 최대 $40의 손실이 있습니다. 나는 이번 주에 자금이 회복될 것이며 분명히 이익이 더 갈 것이라고 생각합니다. 우리는 제안하고 시장은 처분합니다.
 
yosuf :
그것들은 Zulu 프로젝트의 프레임워크 내에서 시작되었으며 저는 여기에서 수입이 미미하지만 2개월 만에 겨우 3달러를 벌었지만 어디서, 언제, 어떻게 비틀거리게 될지 알고 싶습니다. 36명의 Expert Advisors에 있는 센트 계정은 정기적으로 정기적으로 작동합니다. 투자된 $200 중 현재 150개가 기금에 있지만 최대 $40의 손실이 있습니다. 나는 이번 주에 자금이 회복될 것이며 분명히 이익이 더 갈 것이라고 생각합니다. 우리는 제안하고 시장은 처분합니다.

줄루인줄알고 저것들. 29개의 터미널에 액세스할 수 있는 두 개의 유사한(예: TYPE OF TRADING: Trend/flat) 엑스포를 병합할 계획입니까?

 
Roman. :

줄루인줄알고 저것들. 29개의 터미널에 액세스할 수 있는 두 개의 유사한(예: TYPE OF TRADING: Trend/flat) 엑스포를 병합할 계획입니까?



되돌릴 수는 없지만 가능하지만 다른 프로젝트 의 한계 내에서 해야 합니다. 이미 실행 중인 Expert Advisor를 중지하는 것은 불편합니다. 매개변수를 최적화하여 모든 고문을 플러스로 끌어들이고 일부 고문이 일시적으로 수익성이 없는 이유를 이해해야 합니다. 요컨대, 많은 작업. 역추세는 비록 지금 선두에 있지만 등급을 포함한 모든 지표를 즉시 망칠 수 있기 때문에 위험합니다.
 
yosuf :
되돌릴 수는 없지만 가능하지만 다른 프로젝트의 한계 내에서 해야 합니다. 이미 실행 중인 Expert Advisor를 중지하는 것은 불편합니다. 매개변수를 최적화하여 모든 고문을 플러스로 끌어들이고 일부 고문이 일시적으로 수익성이 없는 이유를 이해해야 합니다. 요컨대, 많은 작업. 역추세는 비록 지금 선두에 있지만 등급을 포함한 모든 지표를 즉시 망칠 수 있기 때문에 위험합니다.
알았습니다. 위치는 기본이므로 계획자와 거래하십시오!
 
yosuf :
작업 실행을 중지하는 방법에 대해 설명합니다. 이것이 플랫폼의 종료로 이어질지 모르겠지만 시도해 보겠습니다.
플랫폼에 대해서는 아무 말도 하지 않겠지만(모름) 터미널은 닫힐 것입니다(이론상). :)))
 
선물 마진 계산 방법을 알려주실 수 있습니까?
 
Roman. :

" 같은 데이터를 다른 기능으로 받지 않도록 하고 싶습니다. 같은 타자기를 2개 이상의 기능으로 계산하는 것은 합당하지 않습니다. 한 번만 계산하면 끝입니다. 왜 여기에 추가 리소스를 사용합니까?"

문서에 쓰여진 대로 하고 바퀴를 재발명할 필요가 없습니다.

그리고 이 주기는 어떻습니까?

 for ( int i= 1 ;i<= Bars ;i++)
   {
       double i_maFast1 = iMA ( Symbol (),i_TF,i_maFastPeriod,i_maFastShift,i_maFastMethod, 0 ,i);       // Вычисляем быстрые скользящие..
       double i_maFast2 = iMA ( Symbol (),i_TF,i_maFastPeriod,i_maFastShift,i_maFastMethod, 0 ,i+ 1 );     //..средние
       double i_maSlow1 = iMA ( Symbol (),i_TF,i_maSlowPeriod,i_maSlowShift,i_maSlowMethod, 0 ,i);       // Вычисляем медленные скользящие..
       double i_maSlow2 = iMA ( Symbol (),i_TF,i_maSlowPeriod,i_maSlowShift,i_maSlowMethod, 0 ,i+ 1 );     //..средние
       double stochD1 = iStochastic ( Symbol (),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing, 0 , 0 , 1 ,i);     // Вычисляем значения сигнальной линии..
       double stochD2 = iStochastic ( Symbol (),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing, 0 , 0 , 1 ,i+ 1 );   //..стохастика
       double stochK1 = iStochastic ( Symbol (),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing, 0 , 0 , 0 ,i);     // Вычисляем значения главной линии..
       double stochK2 = iStochastic ( Symbol (),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing, 0 , 0 , 0 ,i+ 1 );   //..стохастика
   }

단계를 직접 수행하십시오. 종료하면 어떻게 되며 다음에 무엇을 합니까? 브래드가 완성되었습니다.

교과서에서와 같이 - 거래 기준의 트리거링을 결정하기 위한 이 기능의 모든 거래 신호 는 순차적입니다(다른 기능에서 다른 신호를 래핑한 다음 이러한 거래 기준의 트리거링을 확인할 때만 작업할 수 있음), 다음 조건 그들의 방아쇠.

주기와 관련하여 지표 매개 변수의 교차점을 확인하기 때문입니다. 여기에서는 모든 것이 기본입니다. 읽고 읽고 생각하는 대로 모든 것이 기록됩니다.

튜토리얼 https://book.mql4.com/en/build/conditions에서는 모든 것이 복잡합니다. 거기에 MACD와 스토캐스틱은 같은 기능인데 저는 그렇게 필요하지 않습니다.

그리고 실제로 참조에 의한 모든 지표 값은 해당 기능으로 전송되어야 합니다. 왜 안 돼? 논리적입니다.

 
TarasBY :
당신이 말하는 것과 "그리는" 것은 두 가지 큰 차이점입니다!!! :)))

Che와 나는 이미 완전히 혼란스러워했습니다. 다음은 3가지 기능으로, 각 기능은 특정 칠면조에 대한 고유한 신호를 수신합니다.

 //+---------------------------------------------------------------------------------------+
//| Проверка пересечения скользящих средних                                               |
//+---------------------------------------------------------------------------------------+
int GetCrossingMa( double & i_maFast1, double & i_maFast2, double & i_maSlow1, double & i_maSlow2)
{
       if ((i_maFast2<i_maSlow2) && (i_maFast1>i_maSlow1))             // Если быстрая скользящая пересекла медленную снизу вверх..
       return (CROSSINGTOUP);                                           //.. значит, - пересечение вверх
                                                 
       if ((i_maFast2>i_maSlow2) && (i_maFast1<i_maSlow1))             // Если быстрая скользящая средняя пересекла медленную сверху вниз..
       return (CROSSINGTODOWN);                                         //..значит, - пересечение вниз
 
   return (CROSSINGWAIT);                                               // Ожидаем пересечения
}

//+---------------------------------------------------------------------------------------+
//| Получение сигнала от Стохастика                                                       |
//+---------------------------------------------------------------------------------------+
int GetStochSignal( double & stochD1, double & stochD2, double & stochK1, double & stochK2)
{
       if ((stochD2<stochK2) && (stochD1>stochK1))                     // Если сигнальная линия пересекла главную снизу вверх..
       return (CROSSINGTOUP);                                           //..значит, - пересечение вверх
       if ((stochD2>stochK2) && (stochD1<stochK1))                     // Если сигнальная линия пересекла главную сверху вниз..
       return (CROSSINGTODOWN);                                         // ..значит, - пересечение вниз
   return (CROSSINGWAIT);                                             // Ожидаем пересечения
}

//+---------------------------------------------------------------------------------------+
//| Получение сигнала от Моментума                                                        |
//+---------------------------------------------------------------------------------------+
void GetMomentumSignal()
{
   double momentum = iMomentum ( Symbol (),i_TF,i_momPeriod, 0 , 0 );
}

이 함수는 모든 칠면조로부터 공통 신호를 받아 BUY 또는 SELL 을 결정합니다.

 //+---------------------------------------------------------------------------------------+
//| Получение общего сигнала для входа в рынок                                            |
//+---------------------------------------------------------------------------------------+
int GetSignal()
{
   for ( int i= 1 ;i<= Bars ;i++)
   {
       double i_maFast1 = iMA ( Symbol (),i_TF,i_maFastPeriod,i_maFastShift,i_maFastMethod, 0 ,i);       // Вычисляем быстрые скользящие..
       double i_maFast2 = iMA ( Symbol (),i_TF,i_maFastPeriod,i_maFastShift,i_maFastMethod, 0 ,i+ 1 );     //..средние
       double i_maSlow1 = iMA ( Symbol (),i_TF,i_maSlowPeriod,i_maSlowShift,i_maSlowMethod, 0 ,i);       // Вычисляем медленные скользящие..
       double i_maSlow2 = iMA ( Symbol (),i_TF,i_maSlowPeriod,i_maSlowShift,i_maSlowMethod, 0 ,i+ 1 );     //..средние
       double stochD1 = iStochastic ( Symbol (),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing, 0 , 0 , 1 ,i);     // Вычисляем значения сигнальной линии..
       double stochD2 = iStochastic ( Symbol (),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing, 0 , 0 , 1 ,i+ 1 );   //..стохастика
       double stochK1 = iStochastic ( Symbol (),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing, 0 , 0 , 0 ,i);     // Вычисляем значения главной линии..
       double stochK2 = iStochastic ( Symbol (),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing, 0 , 0 , 0 ,i+ 1 );   //..стохастика
   }
       if ( GetCrossingMa(i_maFast1, i_maFast2, i_maSlow1, i_maSlow2)==CROSSINGTOUP || i_maFast1>i_maSlow1 )
       return (SIGNAL_BUY);
}

그리고 이것은 일반 신호를 얻는 주요 기능입니다. 여기에서 모든 막대를 통과하는 루프를 통해 칠면조 값을 얻습니다. 기능:

int GetCrossingMa(더블& i_maFast1, 더블& i_maFast2, 더블& i_maSlow1, 더블& i_maSlow2)

int GetStochSignal(더블& stochD1, 더블& stochD2, 더블& stochK1, 더블& stochK2)

void GetMomentumSignal() , 원칙적으로 거기에 밀어 넣을 수도 있습니다.

따라서 칠면조의 모든 계산은 신호를 수신하는 하나의 주요 기능에 있음이 밝혀졌습니다. 여기에서는 모든 것이 논리적입니다.

 

차트에 첨부한 직후 프로그램은 init() 함수로 작업을 시작합니다. Expert Advisor 의 init() 함수 또는 차트에 첨부된 커스텀 인디케이터 는 금융 상품 변경 후 과거 데이터 를 클라이언트 터미널 시작 및 로드 ( Expert Advisors에만 적용되고 인디케이터에는 적용되지 않음 ) 직후에 시작 됩니다. 및/또는 차트 주기, MetaEditor에서 프로그램을 다시 컴파일한 후, 전문가 또는 사용자 지정 표시기의 설정 창에서 입력 매개변수를 변경한 후. EA도 계정 변경 후 초기화 됩니다.

어떻게 작동하는지 설명해 주시겠습니까? 백그라운드에서 또는 어떻게든 추적할 수 있습니까? 아니면 긴 유휴 시간 후에 터미널이 시작될 때 표시기의 init 기능이 전혀 시작되지 않습니까?

 
fore-x :

차트에 첨부한 직후 프로그램은 init() 함수로 작업을 시작합니다. Expert Advisor 의 init() 함수 또는 차트에 첨부된 커스텀 인디케이터는 금융 상품 변경 후 과거 데이터 를 클라이언트 터미널 시작 및 로드 ( Expert Advisors에만 적용되고 인디케이터에는 적용되지 않음 ) 직후에 시작 됩니다. 및/또는 차트 주기, MetaEditor에서 프로그램을 다시 컴파일한 후, 전문가 또는 사용자 지정 표시기의 설정 창에서 입력 매개변수를 변경한 후. EA도 계정 변경 후 초기화 됩니다.

어떻게 작동하는지 설명해 주시겠습니까? 백그라운드에서 또는 어떻게든 추적할 수 있습니까? 아니면 긴 유휴 시간 후에 터미널이 시작될 때 표시기의 init 기능이 전혀 시작되지 않습니까?

Expert Advisor의 전체 작업 동안 변경되지 않는 데이터를 저장하려면 init 기능이 필요합니다. 이것은 프로그램을 로드한 후 한 번만 계산되고 더 이상 다시 계산할 필요가 없는 일부 데이터일 수 있습니다. 이것이 내가 이해하는 방식입니다.

그리고 변수 값을 다시 계산해야 하는 경우, 예를 들어 각각의 새로운 bar 가 도착하면 이러한 변수는 init 함수에서 선언되어서는 안 됩니다. 그들은 거기에서 계산하지 않을 것입니다.

더 쉽게 이해할 수 있도록 init 에서 선언할 수 있고 선언해야 하는 내용은 다음과 같습니다.

   Tick = MarketInfo ( Symbol (), MODE_TICKSIZE);                         // минимальный тик    
   Spread = ND( MarketInfo ( Symbol (), MODE_SPREAD)* Point );                 // текущий спрэд
   StopLevel = ND( MarketInfo ( Symbol (), MODE_STOPLEVEL)* Point );   // текущий уровень стопов
   MinLot = MarketInfo ( Symbol (), MODE_MINLOT);     // минимальный разрешенный объем сделки
   MaxLot = MarketInfo ( Symbol (), MODE_MAXLOT);   // максимальный разрешенный объем сделки
   LotStep = MarketInfo ( Symbol (), MODE_LOTSTEP);           // шаг приращения объема сделки

이것은 시장에서 수집한 데이터이며 이 데이터는 변경되지 않습니다. 여기에서 Spread 변수가 있는 경우 이것은 이미 질문입니다. 스프레드가 고정되지 않은 경우 별도의 기능에 넣는 것이 제 생각에는 더 좋습니다.