CloseAllBuy()는 한 곳에서 호출됩니다. OnTick() 함수에서 if(Bid>buycloseprice) CloseAllBuy(); 그리고 이 상태는 EA를 다시 켤 때도 오지 않았고, 종료 기간에도 오지 않았고, Expert Advisor를 다시 켰을 때도 CloseAllBuy() 함수가 계속 작동했습니다.
rapid_minus : CloseAllBuy()는 한 곳에서 호출됩니다. OnTick() 함수에서 if(Bid>buycloseprice) CloseAllBuy(); 그리고 이 상태는 EA를 다시 켤 때도 오지 않았고, 종료 기간에도 오지 않았고, Expert Advisor를 다시 켰을 때도 CloseAllBuy() 함수가 계속 작동했습니다.
코드가 있을까요? Buycloseprice가 누구인지, 어디서 났는지, 어떻게 초기화되었는지, 어디에서 변경되었는지, 여기에서 명확하지 않습니다.
Buycloseprice 가 어디에서 왔는지, 조건 이전에 어떻게 되는지 명확하지 않습니다. if(Bid>buycloseprice) CloseAllBuy(); . 코드에서 이것만 보았기 때문에 - buycloseprice = NormalizeDouble((iOpen(Symbol(), Period(), 0)+spread+75*Point), Digits); 하지만 이 buycloseprice 는 어디에 선언되고 어떤 값이 초기화되었는지 ?
이것이 구매 주문 의 예상 종가 인 경우 값이 작동한 후 변수로 전송되고 표시되지 않기 전에 변수에 포함된 내용이 있기 때문에 논리가 이미 중단됩니다.
이제 약간의 산술적으로 코드에 다음과 같은 주기가 있습니다.
for(int i=0; i<=OrdersTotal(); i++)
0에서 4까지 5개의 주문이 있다고 가정해 보겠습니다. 그리고 주기는 0에서 5까지 계산됩니다. 이 주기가 올바르게 작동할까요?
또한 if(condition && timeBar!=iTime(Symbol(),Period(),1)) 행 에서 조건 과 timeBar는 어디에서 왔 습니까?
이해했다고 생각합니다. 실수는 global buycloseprice를 설정하고 즉시 값을 0.0으로 지정하는 것입니다. 그리고 나중에 위치를 열 때 특정 값을 취하지만 터미널이 꺼지면 이 값이 사라지고 켜면 원래 값, 즉 0.0이고 이에 따라 if(Bid>buycloseprice) 조건이 관찰되고 종료 명령이 전송됩니다. 하지만 이 변수를 전역 터미널로 옮기는 방법을 모르겠습니다.
CloseAllBuy()는 한 곳에서 호출됩니다. OnTick() 함수에서 if(Bid>buycloseprice) CloseAllBuy(); 그리고 이 상태는 EA를 다시 켤 때도 오지 않았고, 종료 기간에도 오지 않았고, Expert Advisor를 다시 켰을 때도 CloseAllBuy() 함수가 계속 작동했습니다.
다음은 코드입니다.
볼 수 없다
문제: 이 경우 전역 변수를 구체적으로 적용하는 방법을 알려주시겠습니까? 나는 전혀 생각하지 않는다. 고맙습니다.
문서 읽기 터미널의 전역 변수 , 메타에디터의 도움을 보면 거기에서 더 빨리 업데이트됩니다.
또는 중요한 변수의 설정과 값을 파일에 덤프한 다음 로드할 때 거기에서 읽을 수 있습니다.
그리고 대부분의 경우 이 모든 것 없이도 할 수 있습니다. 머리를 조금 깨고 코드에서 올바른 논리를 만드십시오.
총계=주문총계();
if(총>0)
{
for(int i=0; i<=OrdersTotal(); i++)
if(OrderSelect(i,SELECT_BY_POS)==true)
{
if(OrderType()==OP_BUY && OrderMagicNumber()==매직)
{ 새로고침률();
if(Bid>buycloseprice) CloseAllBuy();
}
if(OrderType()==OP_SELL && OrderMagicNumber()==매직)
{ 새로고침률();
if(Ask<sellcloseprice) CloseAllSell();
}
}
}
if((총==0) || (총>0 && OrderSelect(1,SELECT_BY_POS,MODE_TRADES)==true && OrderSymbol()!=Symbol()))
{
Comment(" 열린 자리 가 없습니다. ");
if(조건 && timeBar!=iTime(Symbol(),Period(),1))
{
Print("BY에 대한 기준-1이 나타남");
int poz_1 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue);
수면(1000);
새로 고침();
int poz_2 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue);
수면(1000);
새로 고침();
int poz_3 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue);
수면(1000);
새로 고침();
int poz_4 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue);
수면(1000);
새로 고침();
int poz_5 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue);
timeBar=iTime(Symbol(),Period(),1);
이중 스프레드 = (매도호가);
구매오픈타임 = iTime(Symbol(),Period(),0);
buycloseprice = NormalizeDouble((iOpen(Symbol(), Period(), 0)+spread+75*Point), Digits);
Comment("매직 510015 구매");
Print("종가 = ",매매가);
}
}
}
//+----------------------------------------------- --------------------+*/
CloseAllBuy() 무효화
{
부울 fc;
(int i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) 중단;
if (주문유형()==OP_BUY)
{
fc=OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),slip);
구매 마감 가격 = 0.0;
tc=주문닫기시간();
}
}
}
나는 텍스트에서 반복합니다.
Buycloseprice 가 어디에서 왔는지, 조건 이전에 어떻게 되는지 명확하지 않습니다. if(Bid>buycloseprice) CloseAllBuy(); . 코드에서 이것만 보았기 때문에 - buycloseprice = NormalizeDouble((iOpen(Symbol(), Period(), 0)+spread+75*Point), Digits); 하지만 이 buycloseprice 는 어디에 선언되고 어떤 값이 초기화되었는지 ?
이것이 구매 주문 의 예상 종가 인 경우 값이 작동한 후 변수로 전송되고 표시되지 않기 전에 변수에 포함된 내용이 있기 때문에 논리가 이미 중단됩니다.
이제 약간의 산술적으로 코드에 다음과 같은 주기가 있습니다.
for(int i=0; i<=OrdersTotal(); i++)
0에서 4까지 5개의 주문이 있다고 가정해 보겠습니다. 그리고 주기는 0에서 5까지 계산됩니다. 이 주기가 올바르게 작동할까요?
또한 if(condition && timeBar!=iTime(Symbol(),Period(),1)) 행 에서 조건 과 timeBar는 어디에서 왔 습니까?