바쁘지 않고 볼 줄 아는 녀석들. 어제 칠면조의 고문을 그렸지만, 뭔가 잘 되지 않습니다. 그는 신호가 아닌 거래를 시작하는 것 같습니다. 그리고 반대 신호에 거래를 성사시키는 조건을 추가하려고 했지만 거래가 성사되거나 성사되지 않습니다. 오류를 찾는 데 도움이 됩니다. 조건에 오류가 있는 것은 아닐까요?
inputint Magic = 000 ;
inputdouble Lots = 0.1 ;
inputint TakeProfit = 100 ;
inputint StopLoss = 50 ;
inputint Slippage = 5 ;
double vverh,vnuz,SL,TP;
int tiket;
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit ()
{
//---/* if (Digits == 3 || Digits == 5)
{
TakeProfit *=10;
StopLoss *=10;
Slippage *=10;
}*///---return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit ( constint reason)
{
//---
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick ()
{
//---
vverh = iCustom ( NULL , 0 , "777" , 0 , 1 ); // стрелка вверх
vnuz = iCustom ( NULL , 0 , "777" , 1 , 1 ); // стрелка вниз//-----------------------------------------------------------if (CountSell() == 0 && vnuz > 0 )
{
tiket = OrderSend ( Symbol (),OP_SELL,Lots,Bid,Slippage, 0 , 0 , "" ,Magic, 0 , Red);
if (tiket> 0 )
{
SL= NormalizeDouble (Bid+StopLoss* Point , Digits );
TP= NormalizeDouble (Bid-TakeProfit* Point , Digits );
if ( OrderSelect (tiket, SELECT_BY_TICKET))
if (!OrderModify(tiket,OrderOpenPrice(),SL,TP, 0 ))
Print ( "Ошибка модификации ордера на продажу" );
} elsePrint ( "Ошибка открытия ордера на продажу" );
}
////////////////////////////////////////////////////////////////if (CountBuy() == 0 && vverh > 0 )
{
tiket = OrderSend ( Symbol (),OP_BUY,Lots,Ask,Slippage, 0 , 0 , "" ,Magic, 0 ,Blue);
if (tiket> 0 )
{
TP= NormalizeDouble (Ask+TakeProfit* Point , Digits );
SL= NormalizeDouble (Ask-StopLoss* Point , Digits );
if ( OrderSelect (tiket, SELECT_BY_TICKET))
if (!OrderModify(tiket,OrderOpenPrice(),SL,TP, 0 ))
Print ( "Ошибка модификации ордера на покупку" );
} elsePrint ( "Ошибка открытия ордера на покупку" );
}
}
//+------------------------------------------------------------------+int CountSell()
{
int count = 0 ;
for ( int trade = OrdersTotal ()- 1 ; trade>= 0 ; trade--)
{
if ( OrderSelect (trade,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()== Symbol () && OrderMagicNumber()==Magic && OrderType() == OP_SELL)
count++;
}
}
return (count);
}
//+------------------------------------------------------------------+int CountBuy()
{
int count = 0 ;
for ( int trade = OrdersTotal ()- 1 ; trade>= 0 ; trade--)
{
if ( OrderSelect (trade,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()== Symbol () && OrderMagicNumber()==Magic && OrderType()==OP_BUY)
count++;
}
}
return (count);
}
jarikn : 바쁘지 않고 볼 줄 아는 녀석들. 어제 칠면조의 고문을 그렸지만 뭔가 잘 되지 않습니다. 그는 신호가 아닌 거래를 시작하는 것 같습니다. 그리고 반대 신호에 거래를 성사시키는 조건을 추가하려고 했지만 거래가 성사되거나 성사되지 않습니다. 오류를 찾는 데 도움이 됩니다. 조건에 오류가 있는 것은 아닐까요?
알았습니다. 고맙습니다. 다른 사람이 조언할 수 있습니까?
동시에 나도 너와 함께 공부했어
멈출 때 놀라지 마십시오. 또는 때때로 작동합니다 .
무슨 이유로? 그냥 뭐가 잘못됐는지 쓰세요?
무슨 이유로? 그냥 뭐가 잘못됐는지 쓰세요?
어떤 종류의 습격?
어떤 종류의 습격?
알았습니다.
다른 사람이 거기에 무엇이 잘못되었는지 말해 줄 수 있습니까? 무언가가 정말 잘못되면 어떤 이유로 작동이 중지됩니까?
알았습니다.
다른 사람이 거기에 무엇이 잘못되었는지 말해 줄 수 있습니까? 무언가가 정말 잘못되면 어떤 이유로 작동이 중지됩니까?
거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼
MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론
이고르 마카누 , 2021.07.05 14:16
지표가 아직 계산되지 않았기 때문에
https://www.mql5.com/ru/docs/series/barscalculated
OnInit() 섹션은 터미널 환경을 얻기에 가장 좋은 곳이 아닙니다. 모든 것이 논리적이고 올바르게 작동한다고 생각합니다.여기 답이 있습니다
감사해요.
시작시 즉시 기록에 대한 계산이 필요합니다. 그런 필요가 있기 때문에 인터넷으로 하고 있습니다.
계산 전에 인터넷에서 일시 중지를 추가했습니다. 그렇다면 모두 동일한 일부 "함정"이 있습니까?
시작시 즉시 기록에 대한 계산이 필요합니다. 그런 필요가 있기 때문에 인터넷으로 하고 있습니다.
계산 전에 인터넷에서 일시 중지를 추가했습니다. 그렇다면 모두 동일한 일부 "함정"이 있습니까?
OnTick()에서 첫 번째 실행 플래그를 설정하는 것이 더 쉽고 안정적입니다.
바쁘지 않고 볼 줄 아는 녀석들. 어제 칠면조의 고문을 그렸지만 뭔가 잘 되지 않습니다. 그는 신호가 아닌 거래를 시작하는 것 같습니다. 그리고 반대 신호에 거래를 성사시키는 조건을 추가하려고 했지만 거래가 성사되거나 성사되지 않습니다. 오류를 찾는 데 도움이 됩니다. 조건에 오류가 있는 것은 아닐까요?
무슨 이유로? 그냥 뭐가 잘못됐는지 쓰세요?
개발자는 OnInit()이 초기화를 위한 것이지 다른 어떤 것이 아니라고 썼기 때문에
나는 무슨 일이 일어날지 추측하지 않을 것입니다. 가장 먼저 보는 것은 OnInit()에서 표시기 값을 얻기 위해 일시 중지했다는 것입니다. 사용자가 이때 TF를 전환하면 어떻게 될까요?
추신: 전문가를 실행한 다음 터미널을 닫고 이미 어드바이저가 실행 중인 상태에서 터미널을 다시 여는 경우 코드가 어떻게 작동합니까?