질문은 다음과 같습니다.MQL4에 있는 MQL 4 책 에서. 지역 사회"GV 변수의 속성" 섹션의 "GlobalVariables" 장에서 "GV 변수는 double 유형만 될 수 있습니다"라고 말합니다. 아래 " GlobalVariableDel() function " 섹션에는 다음 내용이 포함된 globalvar.mq4 Expert Advisor의 예가 있습니다.
//--------------------------------------------------------------------// globalvar.mq4// Предназначен для использования в качестве примера в учебнике MQL4.//--------------------------------------------------------------------int Experts; // Колич. экспертовdouble Depo= 10000.0 , // Заданный депозит
Persent= 30 , // Заданный процент
Money; // Искомые средстваstring Quantity= "GV_Quantity" ; // Имя GV-переменной//--------------------------------------------------------------------int init() // Спец. функция init
{
Experts= GlobalVariableGet (Quantity); // Получим тек. знач.
Experts=Experts+ 1 ; // Колич. экспертовGlobalVariableSet (Quantity, Experts); // Новое значение
Money=Depo*Persent/ 100 /Experts; // Средства для эксп.Alert ( "Для эксперта в окне " , Symbol (), " выделено " ,Money);
return ; // Выход из init()
}
//--------------------------------------------------------------------int start() // Спец. функция start
{
int New_Experts= GlobalVariableGet (Quantity); // Новое колич. эксп.if (Experts!=New_Experts) // Если изменилось
{
Experts=New_Experts; // Теперь текущ. такое
Money=Depo*Persent/ 100 /Experts; // Новое знач. средств Alert ( "Новое значение для эксперта " , Symbol (), ": " ,Money);
}
/*
...
Здесь долен быть указан основной код эксперта,
в котором используется значение переменной Money
...
*/return ; // Выход из start()
}
//--------------------------------------------------------------------int deinit() // Спец. ф-ия deinit
{
if (Experts == 1 ) // Если эксперт один..GlobalVariableDel (Quantity); //..удаляем GV-переменelse// А иначе..GlobalVariableSet (Quantity, Experts- 1 ); //..уменьшаем на 1Alert ( "Эксперт выгружен из окна " , Symbol ()); // Сообщ. о выгрузкеreturn ; // Выход из deinit()
}
//--------------------------------------------------------------------
질문: 앞에서 설명한 것처럼 이러한 변수가double 유형이어야 하는 경우 int유형의 이 예에서 GV 변수 Expert및New_Expert 가 있는 이유는 무엇 입니까?
첫 번째 사이클에서는 이전 TF에서 지정된 벤드의 가격을 찾으려고 시도합니다. 발견된 벤드까지 순환합니다. 저는 더 어린 시간대에 두 번째 주기를 시작합니다. 여기서 막대별로 각 굽힘의 가격과 차트에 몇 개나 있는지 찾아보고 첫 번째 주기에서 찾은 가격과 비교합니다. 그런 가격을 찾으면이 TF에서이 굽힘 막대의 시간을 늘립니다.
전략을 테스트할 때 첫 번째 주문이 열린 후 이 기능은 정상적으로 작동합니다. 즉, 후행이 계속되고 주문이 닫힙니다. 그러나 두 번째 차수를 연 후 후행 함수를 호출하면 0 나누기 오류가 발생합니다. 두 번째 주문, 세 번째 주문 등의 후행 작업을 할 수 있도록 도와주세요.
그리고 또 다른 질문.
(i=1; i<StartBar; i++) StartBar를 더 높은 기간(extern int = ... ; //W1, MN1)의 지정된 굽힘(extern int b= 2)이 있는 막대로 만드는 방법 )
마디의 시간을 찾아 이전 TF의 마디 번호 로 변환
코드를 작성할 수 있습니까?
(i=1; i<StartBar; i++) StartBar를 더 높은 기간(extern int = ... ; //W1, MN1)의 지정된 굽힘(extern int b= 2)이 있는 막대로 만드는 방법 )
개정
지정된 기간의 두 꼭짓점의 일치(매주 및 월간이라고 가정)
맞을까?
조건 tf1 > tf2
질문은 다음과 같습니다. MQL4에 있는 MQL 4 책 에서. 지역 사회 "GV 변수의 속성" 섹션의 "GlobalVariables" 장에서 "GV 변수는 double 유형만 될 수 있습니다"라고 말합니다. 아래 " GlobalVariableDel() function " 섹션에는 다음 내용이 포함된 globalvar.mq4 Expert Advisor의 예가 있습니다.
질문: 앞에서 설명한 것처럼 이러한 변수가 double 유형이어야 하는 경우 int 유형 의 이 예에서 GV 변수 Expert 및 New _ Expert 가 있는 이유는 무엇 입니까?
귀하의 응답에 미리 감사드립니다
맞을까?
조건 tf1 > tf2
문제가 있습니까?
첫 번째 사이클에서는 이전 TF에서 지정된 벤드의 가격을 찾으려고 시도합니다. 발견된 벤드까지 순환합니다. 저는 더 어린 시간대에 두 번째 주기를 시작합니다. 여기서 막대별로 각 굽힘의 가격과 차트에 몇 개나 있는지 찾아보고 첫 번째 주기에서 찾은 가격과 비교합니다. 그런 가격을 찾으면이 TF에서이 굽힘 막대의 시간을 늘립니다.
테스터에서 2000.01.01부터 시작되었습니다.
잡지 내용
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.1688
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.2495
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.1192
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.2315
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.1069
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.3161
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.2351
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.4535
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.338
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.4249
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.3
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.416
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.2596
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.3353
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.2658
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.3138
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.0344
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.1537
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.0608
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.1216
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.079
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.2401
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.0104
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.0917
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 0.8227
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 0.9596
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: t1 1992.09.01 00:00
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p1 1.4104
2000년, 즉 테스트 기간이 시작될 때에도 똑같은 일이 일어났습니다.
실수가 어디 있습니까? 나는 약한 프로그래머입니다. 테스트 프로그램을 작성하고 싶습니다. 얻기가 어렵습니다. 받은 데이터에 따라 차근차근 하기 때문에 누구에게도 물어볼 수 없다.
이 곳에서 도와주세요. 그리고 마지막 페이지에서 NewZZ() 함수를 작성하는 데 도움을 요청했습니다.
누군가 오류를 수정하고 설명해주시면 감사하겠습니다.
문제가 있습니까?
약한 사람을 도우십시오.
안녕하세요. 사이트에서 후행 함수를 찾았습니다.
for(i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) 계속;
if(주문유형()==OP_BUY)
{
if(Bid-OrderOpenPrice()>Point*TrailingStop_)
{
if(OrderStopLoss()<Bid-Point*TrailingStop_)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop_,OrderTakeProfit(),0,녹색);
리턴(0);
}
}
}
if(주문 유형()==OP_SELL)
{
if((OrderOpenPrice()-Ask)>(Point*TrailingStop_))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop_)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop_,OrderTakeProfit(),0,빨간색);
리턴(0);
}
}
}
}
전략을 테스트할 때 첫 번째 주문이 열린 후 이 기능은 정상적으로 작동합니다. 즉, 후행이 계속되고 주문이 닫힙니다. 그러나 두 번째 차수를 연 후 후행 함수를 호출하면 0 나누기 오류가 발생합니다. 두 번째 주문, 세 번째 주문 등의 후행 작업을 할 수 있도록 도와주세요.