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

 
Code :


귀하의 답변에 감사드리며 귀하의 질문에 답변해 드리겠습니다.

바로 그 특성이 지표의 전체 아이디어일 뿐입니다. 그리고 동시에 MQL을 연습합니다. 나는 스스로 작업을 생각해 냈고 직관적으로 언어로 구현하는 것이 그다지 복잡하지 않다는 것을 이해합니다. 나는 앉아서 시도합니다.

따라서 특성의 본질은 두 단방향 볼륨의 특정 고정 이론 수준을 실제 수준과 비교하는 것입니다. 즉, 실제 "개방" 간격에 대한 두 거래량의 합계의 실제 비율이 주어진 이론상 값보다 높으면 계산된 두 거래량의 차이 형태로 실제 두 번째 거래량에 "보너스"를 추가합니다. 이론 및 실제 결과. 실제 수준이 이론 수준보다 낮으면 두 번째 막대의 볼륨에서 동일한 차이를 뺍니다. 설명이 명확했나요?

만일을 대비하여 이 특성을 공개할 때 괄호를 잘못 꽂은 것 같아서 서둘러서 말씀드립니다.

또한 귀하가 내 것과 동일하다고 생각하는 라인이 0으로 나눗셈으로 이어질 것 같습니다. 이제 확인하겠습니다.

분명히. 그러나 2(두 권 사이의 평균)와 UP12 변수에서 계산된 것이 어떻게 상호 연결되는지는 분명하지 않습니다. 결국, 하나와 다른 하나의 치수는 다릅니다. 분모의 시간과 가격. 결국, 학교에서도 미터와 킬로그램은 어떤 식으로든 더할 수 없다고 배웠습니다! :)))))


바로, 옳지 않다! :)))) 분수의 형태로 공식화하는 것과 다른 것이 모두 한 줄에 있고 어떻게 ... 명확하지 않은지 ... 이것은 서두르지 않고 부주의 ...

또한 코드를 잘못 최적화했습니다. 다시 말하지만, 수학에 오류가 있습니다. 대괄호를 잊어 버렸습니다.

   double vrealUP12=(dVolume+vback1)/((Close[i]-Open[i+ 1 ])* 1000 );
 
Roman. :

당신의 스타일은 전혀 거기에 없습니다 ... 완전히 잘못된 거래 기준에 대한 질문은 STO-HAS-TI-KE에 관한 것입니다 ... :-P

질문은 이랬습니다.

평생 아이디어 :

condition1이 충족 되면 다음을 수행합니다.
-오픈 SELL 주문 확인
-있는 경우 닫습니다.
- 당신은 계정에서 자금의 가용성을 확인할 수 있습니다
- BUY 주문 열기

condition2가 충족 되면 동일합니다.
- 오픈 BUY 주문 확인
-있는 경우 닫습니다.
- 당신은 계정에서 자금의 가용성을 확인할 수 있습니다
-판매를 위한 주문을 엽니다.
+ 오류 분석(주요 사항은 아니지만 가능)

그리고 여기 STOHASTEG??? :)))))

필요한 모든 확인이 이미 이루어졌으며 거래 신호가 형성되었는지 여부.

 
demlin :

안녕하세요!

이 지점의 전문가(특히 Roman)의 귀중한 도움 덕분에 테스터에 +를 표시하는 간단한 Expert Advisor를 만들 수 있었습니다. 질문 : 실제에 넣을 수 있는지 여부를 결정하는 방법은 무엇입니까? 기준이 있나요?


예, 적절한 조직 결정을 내리는 전문가와 가능한 오류를 유능하게 처리하는 형태로 "기본" 항목(실제로 선명하게 - 연결 끊기 및 추가 회선으로 전환에 대한 제어는 고려하지 않음)을 어떤 기준으로 설정합니까? 추가 작업, 필수 데모, 마이크로 리얼 ... 결과에 만족하면 "모두 나가십시오"... :-))) 먼저 교과서 에서 고문의 오류 처리를 분석하십시오. 주문하기 전에 거래 작업을 수행할 때 요구 사항 및 제한 사항을 확인하는 것을 잊지 마십시오. 검색에서 Google을 통해 다음과 같이 입력하십시오. 다음과 같은 유사한 기능을 수행 하는 전문가가 있습니다.

 // После старта
if (! IsTradeAllowed () || IsTradeContextBusy () || ! IsConnected ()) return ; // если торговля невозможна, то выходим

작업을 위한 주문 선택 확인

                 if (ticket> 0 )                                               // Если позиция открылась
                    {
                       while ( OrderSelect (ticket,SELECT_BY_TICKET)==false) Sleep ( 1000 );     // Если ордер выбран
                         double OpenPrice= OrderOpenPrice ();
                         ...  
                           

처음에는

 color ColorBuy = Blue , ColorSell = Red ;
bool UseSound = true;
string alert.wav;
color clr, ClrClose = Gray ;
int Level_new; 
double price;
bool result, Buy_signal=false, Sell_signal=false;
int   orderIndex;
bool IsExpertFailed = false;
bool IsExpertStopped = false;
double lots;                       // вспомогательная переменная для расчета нового размера лота 
double Lots_New;                   // Количество лотов для новых ордеров
int ticket;                         // Номер ордера
double orderLots;                   // Lots   
double orderProfit;                 // Profit
double Price;                       // Цена открытия рыночного ордера
double SL;                         // Значение StopLoss ордера
double   TP;                         // Значение TakeProfit ордера
static datetime prevtime = 0 ;       // по ценам открытия

int init(){
    IsExpertStopped = false;
     if (! IsTradeAllowed ())
       {
         Comment ( "Необходимо разрешить советнику торговать" );
         IsExpertStopped = true;
         return ( 0 );
       }
      
     if (! IsTesting ())
       {
         if ( IsExpertEnabled ())   Comment ( "Советник запустится следующим тиком" );       
           else    Comment ( "Отжата кнопка \"Разрешить запуск советников\"" );
      
       }
    ...
   
   return ( 0 );
}

모든 것, IMHO, 우선, 오랫동안 계속할 수 있습니다 ...

어쨌든 "매니저"의 통제가 필요합니다 ... :-R 병합 된 예금에 대해 극도로 고통스럽지 않도록 ...

 

최대 Z :


질문은 이랬습니다.

그리고 여기 STOHASTEG??? :)))))

필요한 모든 확인이 이미 이루어졌으며 거래 신호가 형성되었는지 여부.


직접적인 질문이 있었습니다.

"이것은 현재 통화 쌍에 대한 모든 것입니다.
정수 시작()
{
double M_0, M_1, // 0 및 1 막대의 MAIN 값
S_0, S_1; // 0 및 1 막대의 신호 값
//------------------------------------------------ --------------------
// tech.indicator 함수를 호출합니다.
M_0 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN, 0);// 0 bar
M_1 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN, 1);// 1 bar
S_0 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,0);// 0 bar
S_1 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,1);// 1 bar
//------------------------------------------------ --------------------

if( M_1 < S_1 && M_0 >= S_0 ) // 조건 1: 녹색이 아래에서 빨간색과 교차합니다.

if( M_1 > S_1 && M_0 <= S_0 ) // 조건 2: 녹색이 위에서 빨간색과 교차합니다.

//------------------------------------------------ --------------------
반품; // start()에서 종료
}"

전반적으로 신경 쓰지 마세요. IMHO, 스케일링이 저자에게 전송되었습니다. 그는 그것을 알아낼 것입니다 ... :-P

 

Roman. :


처음에는

 ...
int init(){
    IsExpertStopped = false;
     if (! IsTradeAllowed ())
       {
         Comment ( "Необходимо разрешить советнику торговать" );
         IsExpertStopped = true;
         return ( 0 );
       }
...

IsExpertStopped 변수의 목적은 무엇입니까? 그리고 로그의 모든 틱에는 " 어드바이저가 거래를 허용 해야 합니다"라는 메시지가 나타납니다...

 
MaxZ :

IsExpertStopped 변수의 목적은 무엇입니까? 그리고 로그의 모든 눈금에는 "어드바이저가 거래를 허용해야 합니다"라는 메시지가 나타납니다...

나는 이것을 좋아한다:


F1 클릭
 IsTradeAllowed ()

알아보세요... :P

즉 "

EA가 거래를 허용하고 거래 작업을 수행하기 위한 스레드가 무료인 경우", 우리는 거래하고, 그렇지 않으면 IsExpertStopped = EA가 중지 되고 거래 허가를 기다리고 있습니다...

 
Roman. :

F1 클릭

알아보세요... :P

즉 "

Expert Advisor가 거래할 수 있고 거래 작업을 수행하기 위한 스레드가 무료인 경우", 우리는 거래하고, 그렇지 않으면 IsExpertStopped = Expert Advisor가 중지되고 거래 허가를 기다리고 있습니다...

그것은... 오늘 완전히 정신이 산만해졌어요. 나는 init()를 보았지만 start()에 대해 생각합니다! :))))))

 
MaxZ :

분명히. 그러나 2(두 권 사이의 평균)와 UP12 변수에서 계산된 것이 어떻게 상호 연결되는지는 분명하지 않습니다. 결국, 하나와 다른 하나의 치수는 다릅니다. 분모의 시간과 가격. 결국, 학교에서도 미터와 킬로그램은 어떤 식으로든 더할 수 없다고 배웠습니다! :))))


바로, 옳지 않다! :)))) 분수의 형태로 공식화하는 것과 다른 것이 모두 한 줄에 있고 어떻게 ... 명확하지 않은지 ... 이것은 서두르지 않고 부주의 ...

또한 코드를 잘못 최적화했습니다. 다시 말하지만, 수학에 오류가 있습니다. 대괄호를 잊어 버렸습니다.


MaxZ, 서둘러, 오 서둘러 :))) 결론과 함께!

나는 킬로미터와 킬로그램을 더하지 않았습니다. 실생활의 예. 오늘의 유로달러, 5분. 나는 2개의 성장하는 양초 가 연속으로 있는 차트를 찔렀습니다.

vback1=703, d볼륨=696. (vback1+d볼륨)/2=699.5.

동일한 양초에 대해 (Close[i]-Open[i+1] )*1000=(1.42911-1.42549)*1000=3.62

(vback1+d볼륨)/3.62=386.5

총계: 696+699.5-386.5=1009. 그려야 할 것. 그리고 1009라는 표시기가 이 위치에 표시됩니다. 글쎄, 등등.

또 다른 것은 여기에서 이 예제를 계산한 결과 코드에 포함된 공식에 따라 이전 게시물에서 설명한 일이 일어나지 않는다는 것을 스스로 발견했다는 것입니다. 사실 그것은 다른 이데올로기, 일종의 자율규제임이 밝혀졌다. vrealUP12 매개변수의 마이너스 값이 dVolume+vteor12의 합을 초과하지 않는 한 마지막 볼륨까지 증가합니다. 또는 추가 계산 매개변수 ExtVolumesBuffer[i]를 입력해야 합니다.

그리고 라인에서

 double vrealUP12=(dVolume+vback1)/((Close[i]-Open[i+ 1 ])* 1000 );

나는 즉시로 돌아왔다.

 double vrealUP12=(dVolume+vback1)/UP12;

길어지지 않게.

 
Code :


MaxZ, 서둘러, 오 서둘러 :)))) 결론으로!

나는 킬로미터와 킬로그램을 더하지 않았습니다. 실생활의 예. 오늘의 유로달러, 5분. 나는 2개의 성장하는 양초가 연속으로 있는 차트를 찔렀습니다.

젠장 ... 추가 및 방법! :))

변수 vteor12의 차원은 Volumes(우리의 미터임)입니다.

vteor12=(dVolume+vback1)/ 2 ;

UP12 변수에는 일부 통화 쌍에 대한 포인트 차원이 있습니다.

UP12=(Close[i]-Open[i+ 1 ])* 1000

변수 vrealUP12는 Volumes 대 Points 비율의 차원을 갖습니다(이것은 Our 킬로그램입니다).

vrealUP12=(dVolume+vback1)/UP12;

그리고 결국 미터와 킬로그램의 합인 특성을 계산합니다. 이것이 바로 우리가 말하는 것입니다! ;디

ExtVolumesBuffer[i]=dVolume+vteor12-vrealUP12;


2개만 20점이 아닌 경우 이론상 통과해야 하는 2개의 막대 가격! :)) 그러나 이것은 이미 일종의 넌센스입니다 ...


코드 :


그리고 라인에서

 double vrealUP12=(dVolume+vback1)/((Close[i]-Open[i+ 1 ])* 1000 );

나는 즉시로 돌아왔다.

 double vrealUP12=(dVolume+vback1)/UP12;

길어지지 않게.

늘이기는 때때로 유용합니다. 컴퓨터 리소스를 절약합니다! :))) 이 추가 변수는 무엇을 위한 것입니까?

 
MaxZ :

젠장 ... 추가 및 방법! :))

변수 vteor12의 차원은 Volumes(우리의 미터임)입니다.

변수 UP12에는 차원 가격이 있습니다.

변수 vrealUP12는 부피와 가격의 비율 차원을 갖습니다(이것은 우리의 킬로그램입니다).

그리고 결국 미터와 킬로그램의 합인 특성을 계산합니다. 이것이 바로 우리가 말하는 것입니다! ;디


좋아요, 다르게 보도록 하겠습니다.

vteor12는 (dVolume+vback1)/k1(인자 1)로 쓸 수 있습니다.

vrealUP12는 (dVolume+vback1)/k2(인자 2)로 쓸 수 있습니다.

이미 지표의 이데올로기를 설명하려고 하였듯이 이론적인 수준과 실제 수준을 비교하는 것으로 구성되어 있습니다. 이러한 수준을 얻기 위해 동일한 값(dVolume + vback1)(즉, 나누기)을 특정 이론 값(k1) 및 실제 값(k2)과 비교합니다. 우리가 스페이드라고 부르는 경우 나는 단지 k1을 구성하고 있음을 이해합니다. 또는 당신이 원한다면, 나는 가정합니다. 이제 무언가와 비교해야합니다. 이 문제에서 차트 자체보다 더 객관적이고 진실한 것은 없습니다. 그러므로 나는 여는 것과 닫는 것의 차이를 주어진 시간의 최종 결과로 인식한다. 그리고 여기에는 동일한 비트 깊이를 가져오는 단 하나의 작업이 있습니다. 이것이 1000을 곱한 이유입니다.

계산기를 사용하여 인접한 양초에 대한 몇 가지 다른 옵션을 계산해 보세요. 이 매우 간단한 공식을 사용하여 다양한 결과에 놀랄 수 있습니다.

그리고 학교 논리의 관점에서 보면 당신이 옳습니다. 학교에서 허용되지 않는 Volume + Volume/Price를 추가합니다. :))