[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 863

 
IgorM :

터미널 정지(정전) 시 중요한 데이터/변수를 저장하는 가장 좋은 방법은 무엇입니까?

- 터미널의 전역 변수? 파일로?

- 어떤 주파수로? (에퀴티의 마지막 값과 어드바이저의 여러 플래그(bool)가 중요)

문제는 무엇입니까, 모든 것이 배열에 있고 배열은 각 틱 의 파일에 있습니다. 초기화에서 파일을 읽습니다. 그리고 제로 문제
 

안녕하세요!

왜 오픈 포지션이 수정되지 않는지 이해할 수 없습니다.(주문 선택 기능에서) 주문 유형이 지정된 것 같습니다.

//+----------------------------------------------- --------------------+
//| 뉴스 trade.mq4 |
//| Copyright © 2010, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+----------------------------------------------- --------------------+
#property copyright "Copyright © 2010, MetaQuotes Software Corp."
#속성 링크 "http://www.metaquotes.net"


extern bool In_BUYSTOP=참;
extern int TakeProfit_buy=100;
extern int StopLoss_buy=5;
extern 더블 lot_buy=0.01;
//+----------------------------------------------- --------------------+
extern bool In_SELLSTOP=참;
외부 정수 TakeProfit_sell=100;
extern int StopLoss_sell = 5;
외부 이중 lot_sell = 0.01;
extern int 레벨 이익 = 25; // - 스톱이 손익분기 수준으로 이동하기 위해 위치가 도달해야 하는 포인트 단위의 이익 수준.
외부 정수 레벨WLoss = 1; // - 이익이 LevelProfit 수준에 도달한 후 포지션 스톱이 이동할 지점의 손익분기점 수준입니다.

//+----------------------------------------------- --------------------+
//| 전문가 초기화 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
//----
int 이익구매=((입찰가 - OrderOpenPrice())/포인트); // 구입
intprofitsell=((OrderOpenPrice()- 묻기)/포인트); // 팔다
//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 전문가 초기화 해제 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
//----
//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 전문가 시작 기능 |
//+----------------------------------------------- --------------------+
정수 시작()
//----
{
인트 티켓;
if (입찰가 >iHigh(NULL,PERIOD_D1,1))
{
if(주문 합계() < 1)
ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots_sell,iHigh(NULL,PERIOD_D1,1),3,iHigh(NULL,PERIOD_D1,1)+StopLoss_sell*Point,iHigh(NULL,PERIOD_D1,1)-TakeProfit_sell*Point,Hour () == 21 && 분() == 59);
}
if (문의<iLow(NULL,PERIOD_D1,1))
{
if(주문 합계() < 1)
ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots_buy,iLow(NULL,PERIOD_D1,1),3,iLow(NULL,PERIOD_D1,1)-StopLoss_buy*Point,iLow(NULL,PERIOD_D1,1)+TakeProfit_Hourbuy*Point () == 21 && 분() == 59);
}
//오오오오오오오오오오오오오오오오오오오오
리턴(0);
}
//+----------------------------------------------- --------------------+
if(주문 선택(0, SELECT_BY_POS,MODE_TRADES)==true)
{
int order_type=주문 유형();
order_type=OP_SELL;
intprofitsell=((OrderOpenPrice()- 묻기)/포인트);
if (이익 판매>5)
티켓=OrderModify(OrderTicket(),OrderOpenPrice(),0,OrderTakeProfit(),0,Blue);
리턴(0);
}
if(주문 선택(0, SELECT_BY_POS,MODE_TRADES)==true)
{
order_type=OP_BUY;
int 이익구매=((입찰가 - OrderOpenPrice())/포인트);
if (이익매수>5)
int stopmodify=OrderOpenPrice();
OrderModify(OrderTicket(),OrderOpenPrice(),stopmodify,OrderTakeProfit(),0,Blue);
리턴(0);
}
 

친애하는 개발자 여러분, 질문입니다.

Expert Advisor에서 지표를 호출할 때 전역 지표 변수가 올바르게 작동하도록 할 수 없습니다.

다음은 표시기 코드입니다(질문을 이해하는 데 필수적인 줄만 남음).

 double   price;
double   PriceBuffer[];

int init()
{
   SetIndexBuffer ( 0 ,PriceBuffer);
   return ( 0 );
}
int start()
{
   int limit, i;
   int counted_bars=IndicatorCounted();
   
   //---- last counted bar will be recounted
   if (counted_bars> 0 ) counted_bars--;
   limit= Bars -counted_bars;

   for (i=limit- 1 ; i>= 0 ; i--)
   {
        PriceBuffer[i] = price;
        price = iClose( NULL , 0 ,i);
   }
   return ( 0 );
}

각 막대에 현재 가격을 글로벌 변수 가격에 저장하고 다음 막대에 표시합니다. 따라서 가격 차트가 한 막대 지연된 것을 볼 수 있습니다. 지표를 차트에 첨부하면 모든 것이 정직하게 작동합니다.

그러나 이 표시기가 Expert Advisor에서 호출되고 시각적 테스트 가 수행되면 테스트가 끝날 때 표시기가 의도한 것과 약간 유사함을 알 수 있습니다.

이제 표시기가 시각적 테스트 차트에서 다시 계산되면(예: 속성을 열고 닫음) 모든 것이 정상으로 돌아갑니다. 첫 번째 그림이 다시 표시됩니다.

내가 무엇을 잘못하고 있지?

검색했지만 답을 찾지 못했습니다.

MT4 버전 4.00 빌드 226을 사용하고 있습니다.

[삭제]  
역사에 진드기가 없기 때문이라고 생각합니다. 여기에 빠진 것이 있습니다. 실시간으로 모든 것이 명확해야 합니다! ;)
[삭제]  

안녕하세요, 스크립트가 실행 중일 때 로그에 다음과 같은 오류가 있기 때문에 코드에서 정확성이 없는 부분을 알려주세요.

15:40:29 11dP_real_symbol EURUSD,H4: <--- 2개의 올바른 차트를 찾았습니다. --->

15:40:29 11dP_real_symbol EURUSD,H4: <--- 결과를 보려면 EURUSD,M1002 차트를 여십시오 --->

15:40:29 11dP_real_symbol EURUSD,H4: MarketInfo 함수의 기호 이름은 문자열이어야 합니다.

15:40:29 11dP_real_symbol: FileWriteString 함수 에 대한 빈 문자열 매개변수

15:40:29 11dP_real_symbol EURUSD,H4: MarketInfo 함수의 기호 이름은 문자열이어야 합니다.

15:40:29 11dP_real_symbol EURUSD,H4: <--- 결과를 보려면 차트 열기, M1002 --->

15:40:29 11dP_real_symbol EURUSD,H4: WindowHandle 함수의 첫 번째 매개변수는 초기화된 문자열이어야 합니다.

15:40:30 11dP_real_symbol EURUSD,H4: WindowHandle 함수의 첫 번째 매개변수는 초기화된 문자열이어야 합니다.

15:40:31 11dP_real_symbol EURUSD,H4: WindowHandle 함수의 첫 번째 매개변수는 초기화된 문자열이어야 합니다.

아래 코드를 첨부합니다.

파일:
11dp.mq4  15 kb
 
IgorM :

터미널 정지(정전) 시 중요한 데이터/변수를 저장하는 가장 좋은 방법은 무엇입니까?

- 전역 터미널 변수 ? 파일로?

- 어떤 주파수로? (에퀴티의 마지막 값과 어드바이저의 여러 플래그(bool)가 중요)


다른 변수와 달리 GV 변수는 모든 프로그램에서 생성할 수 있을 뿐만 아니라 삭제할 수도 있습니다. GV-변수의 값은 클라이언트 터미널이 닫힌 후에도 컴퓨터의 하드 디스크에 저장됩니다. GV-변수는 한번 선언되면 마지막 접근 시점부터 4주간 클라이언트 단말에 존재한다. 지정된 기간 동안 어떤 프로그램도 GV-변수에 액세스하지 않으면 클라이언트 터미널에 의해 삭제됩니다. GV 변수는 double 유형만 가능합니다.
 
etroplus :

안녕하세요!

왜 오픈 포지션이 수정되지 않는지 이해할 수 없습니다.(주문 선택 기능에서) 주문 유형이 지정된 것 같습니다.

//+----------------------------------------------- --------------------+
//| 뉴스 trade.mq4 |
//| Copyright © 2010, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+----------------------------------------------- --------------------+
#property copyright "Copyright © 2010, MetaQuotes Software Corp."
#속성 링크 "http://www.metaquotes.net"


extern bool In_BUYSTOP=참;
extern int TakeProfit_buy=100;
extern int StopLoss_buy=5;
외부 이중 lot_buy=0.01;
//+----------------------------------------------- --------------------+
extern bool In_SELLSTOP=참;
외부 정수 TakeProfit_sell=100;
extern int StopLoss_sell = 5;
외부 이중 lot_sell = 0.01;
extern int 레벨 이익 = 25; // - 스톱이 손익분기 수준으로 이동하기 위해 위치가 도달해야 하는 포인트 단위의 이익 수준.
외부 정수 레벨WLoss = 1; // - 이익이 LevelProfit 수준에 도달한 후 포지션 스톱이 이동할 지점의 손익분기점 수준입니다.

//+----------------------------------------------- --------------------+
//| 전문가 초기화 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
//----
int 이익구매=((입찰가 - OrderOpenPrice())/포인트); // BUY는 중복, 먼저 모든 변수가 0입니다.
intprofitsell=((OrderOpenPrice()- 묻기)/포인트); // 팔다
//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 전문가 초기화 해제 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
//----
//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 전문가 시작 기능 |
//+----------------------------------------------- --------------------+
정수 시작()
//----
{
인트 티켓;
if (입찰가 >iHigh(NULL,PERIOD_D1,1))
{
if(주문 합계() < 1)
ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots_sell,iHigh(NULL,PERIOD_D1,1),3,iHigh(NULL,PERIOD_D1,1)+StopLoss_sell*Point,iHigh(NULL,PERIOD_D1,1)-TakeProfit_sell*Point,Hour () == 21 && 분() == 59);
}
if (문의<iLow(NULL,PERIOD_D1,1))
{
if(주문 합계() < 1)
ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots_buy,iLow(NULL,PERIOD_D1,1),3,iLow(NULL,PERIOD_D1,1)-StopLoss_buy*Point,iLow(NULL,PERIOD_D1,1)+TakeProfit_Hourbuy*Point () == 21 && 분() == 59);
}
//오오오오오오오오오오오오오오오오오오오오
리턴(0);
}
//+----------------------------------------------- --------------------+
if(주문 선택(0, SELECT_BY_POS,MODE_TRADES)==true)
{
int order_type=주문 유형();
order_type=OP_SELL;// 아마도 if(order_type==OP_SELL), 더 많은 괄호가 필요할 것입니다
intprofitsell=((OrderOpenPrice()- 묻기)/포인트);
if (Profitsell>5)// 매 틱마다 주문을 수정하시겠습니까?
티켓=OrderModify(OrderTicket(),OrderOpenPrice(),0,OrderTakeProfit(),0,Blue);
리턴(0);
}
if(주문 선택(0, SELECT_BY_POS,MODE_TRADES)==true)
{
order_type=OP_BUY;
int 이익구매=((입찰 - OrderOpenPrice())/포인트);
if (이익매수>5)
int stopmodify=OrderOpenPrice();
OrderModify(OrderTicket(),OrderOpenPrice(),stopmodify,OrderTakeProfit(),0,Blue);
리턴(0);
}
[삭제]  
안녕하세요, 스크립트가 실행 중일 때 로그에 다음과 같은 오류가 있기 때문에 코드에서 정확성이 없는 부분을 알려주세요.


15:40:29 11dP_real_symbol EURUSD,H4: <--- 2개의 올바른 차트를 찾았습니다. --->

15:40:29 11dP_real_symbol EURUSD,H4: <--- 결과를 보려면 EURUSD,M1002 차트를 여십시오 --->

15:40:29 11dP_real_symbol EURUSD,H4: MarketInfo 함수의 기호 이름은 문자열이어야 합니다.

15:40:29 11dP_real_symbol: FileWriteString 함수 에 대한 빈 문자열 매개변수

15:40:29 11dP_real_symbol EURUSD,H4: MarketInfo 함수의 기호 이름은 문자열이어야 합니다.

15:40:29 11dP_real_symbol EURUSD,H4: <--- 결과를 보려면 차트 열기, M1002 --->

15:40:29 11dP_real_symbol EURUSD,H4: WindowHandle 함수의 첫 번째 매개변수는 초기화된 문자열이어야 합니다.

15:40:30 11dP_real_symbol EURUSD,H4: WindowHandle 함수의 첫 번째 매개변수는 초기화된 문자열이어야 합니다.

15:40:31 11dP_real_symbol EURUSD,H4: WindowHandle 함수의 첫 번째 매개변수는 초기화된 문자열이어야 합니다.

아래 코드를 첨부합니다.
파일:
11dp_1.mq4  15 kb
 

"OP BUY" 예상 변수가 무엇을 의미하는지 알려주세요

여기 동안(차이>스와이프)
( OrderSend (문자열 기호, OP_BUY, 볼륨, 두 배 가격, 슬리피지, Bid-stoploss*Point,
Bid+takeprofit*Point, string comment=NULL, int magic=0, datetime 만료=0, color arrow_color=Red) )

동안(0차>스팬)
( OrderSend (문자열 기호, OP_SELL, 볼륨, 두 배 가격, 슬리피지, Ask+stoploss*Point,
Ask-takeprofit*Point, string comment=NULL, int magic=0, datetime 만료=0, color arrow_color=Black) )

 
mql4에서 차트에 포인트를 작성하는 방법은 무엇입니까? 가격과 시간을 기록해 두면 어떤 기간에도 그대로 유지됩니다.