[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 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에서 차트에 포인트를 작성하는 방법은 무엇입니까? 가격과 시간을 기록해 두면 어떤 기간에도 그대로 유지됩니다.