int start ()// Special function 'start'{string Symb =Symbol();// Symboldouble Dist =1000000.0;// Presettingint Real_Order =-1;// No market orders yetdouble Win_Price =WindowPriceOnDropped();// The script is dropped here//-------------------------------------------------------------------------------- 2 --for(int i =1; i <=OrdersTotal(); i ++)// Order searching cycle{if(OrderSelect( i -1, SELECT_BY_POS )==true)// If the next is available{// Order analysis://----------------------------------------------------------------------- 3 --if(OrderSymbol()!= Symb )continue;// Symbol is not oursint Tip =OrderType();// Order typeif( Tip >1)continue;// Pending order //----------------------------------------------------------------------- 4 --double Price =OrderOpenPrice();// Order priceif(NormalizeDouble(MathAbs( Price - Win_Price ),Digits)<//SelectionNormalizeDouble( Dist ,Digits))// of the closest order {
Dist =MathAbs( Price - Win_Price );// New value
Real_Order = Tip ;// Market order availableint Ticket =OrderTicket();// Order ticketdouble Lot =OrderLots();// Amount of lots}//----------------------------------------------------------------------- 5 --}//End of order analysis}//End of order searching//-------------------------------------------------------------------------------- 6 --while(true)// Order closing cycle{if( Real_Order ==-1)// If no market orders available{Alert("For ", Symb ," no market orders available");break;// Exit closing cycle }//-------------------------------------------------------------------------- 7 --switch( Real_Order )// By order type{case0:double Price_Cls =Bid;// Order Buystring Text ="Buy ";// Text for Buybreak;// Из switchcase1: Price_Cls =Ask;// Order Sell
Text ="Sell ";// Text for Sell}Alert("Attempt to close ", Text ," ", Ticket ,". Awaiting response..");bool Ans =OrderClose( Ticket , Lot , Price_Cls ,2);// Order closing
"Dist" 값을 확인하십시오
확인하다? 어떻게? MQL4 책에서 코드(거리 변수가 있는 부분)를 복사했습니다.
see also: https://book.mql4.com/trading/orderclose
1. "Dist"의 초기 값이 올바른지 확인하십시오.
2. 주기 시작 시 "Dist" 값을 확인하기 위해 경고 삽입: "Alert ( " Dist = ", Dist ) ; "
변수 "dist"를 사용하지 않고 올바른 순서를 선택하는 방법이 있습니까?
답변 1
샘플의 ">" 및 "<" 기호는 동일한 표현식에 대해 다른 방향입니다.
closeorder.mq4 의 22행과 이전 샘플의 6행을 참조하십시오.
제 생각에는 두 번째 샘플에서는 실수가 틀림없다고 생각합니다... 어떻게 생각하세요?
답변 2
"올바른 순서"의 의미에 따라 다릅니다.
오픈 가격이 더 낮은 OP_BUY 주문을 선택(및 마감)해야 하며 이 선택은 2개의 주문이 있을 때 시작해야 합니다. 난 너무 혼란 스러워요...
평범한 일
그래서 내가 뭘 잘못하고 있니? 오픈프라이스가 낮은 OP_BUY를 어떻게 선택하시겠습니까? "Dist" 없이도 시도했습니다 ...
" if (Price < Price), Digits) " 행의 의도는 무엇입니까 ??
내가 보기엔 미쳤어.
CB
" if (Price < Price), Digits) " 행의 의도는 무엇입니까 ??
내가 보기엔 미쳤어.
그 뿐만이 아닙니다.
왼쪽 대괄호가 누락된 상태에서 어떻게 오류 없이 컴파일할 수 있습니까?
나는 이 코드를 잡아먹는 헛된 인사이트와 완전한 바보, 그리고 완전한 와시쿠스에 지쳤습니다.
모든 인간은 실수를 한다
if (a_human_made_a_mistake==true)
{human_learn_next_lesson();}
또 다른
{reincarnate_as_plant=true;}
{human_learn_next_lesson();}
MT5만 있었다면. 그런 다음 우리는 대신 human->learnNextLesson()을 수행할 수 있습니다.
MT5만 있었다면. 그런 다음 우리는 대신 human->learnNextLesson()을 수행할 수 있습니다.
나는 OOP에 익숙하지 않습니다.
난 그게 싫어. 아무것도에 대한 너무 많은 번거 로움.
그런 경우에는 배우기를 거부합니다... ;-)
이것->반복->이것->반복->이것->반복->이것->반복->이것->반복->이것->반복->이것->반복->이것;