[아카이브!] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 2. - 페이지 357

 
Zhunko :
코드를 게시할 수 있습니까? 아마도 의사 코드. 시작이 없다면 어떻게 될까요?... 이것은 C++의 main()과 같은 주요 기능입니다.

해결하려는 작업에 따라 다르며 EA 프로그램 본문에서 코드의 위치에 따라 결정됩니다. 아무도 시작 기능에 코드를 유지하도록 강요하지 않습니다!

start() 함수는 코드 템플릿에 미리 정의된 세 가지 중 하나입니다. 부모 프로그램은 터미널 프로그램(여기서는 main(), main)이고 주요 작업을 수행하고 서버로부터 (대략) 새로운 견적을 받았기 때문에 최소한 존재해야 합니다. 시작 함수에 넣고 그 안에 있는 코드를 실행합니다. return()만 있으면 시작 함수가 거기서 끝납니다.

 
"Pros, don't pass by" :) 경제 달력 및 기타 유용한 정보가 게시되는 좋아하는(러시아어 사용 가능) 뉴스 리소스에 대한 링크를 공유하십시오. 여기에 그러한 링크를 배치하는 것이 허용되지 않으면 PM으로 저에게 보내주십시오.
 
다음을 작성하는 데 도움이 됩니다.

매수 신호가 있는 경우
공개 판매 주문 확인
있으면 닫습니다
그렇지 않은 경우 구매 열기

매도 신호가 있는 경우
미결 구매 주문 확인
있으면 닫습니다
그렇지 않은 경우 구매 열기
 
frxmax :
다음을 작성하는 데 도움이 됩니다.

매수 신호가 있는 경우
공개 판매 주문 확인
있으면 닫습니다
그렇지 않은 경우 구매 열기

매도 신호가 있는 경우
미결 구매 주문 확인
있으면 닫습니다
그렇지 않은 경우 구매 열기


쓰기 시작 - 우리가 도울 것입니다

여기에 도움이 됩니다 https://book.mql4.com/en/

 
abolk :


쓰기 시작 - 우리가 도울 것입니다

여기에 도움이 됩니다 https://book.mql4.com/en/

나는 이미 시작했다

총계=주문총계();
if(구매 주문을 열기 위한 조건)
if(총<1)
{
ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Bid-StopLoss*Point,Bid+100*Point,"Buy",1111,0,Green);
if(티켓<0)
{
Print("오류 번호로 인해 OrderSend가 실패했습니다.",GetLastError());
리턴(0);
}
}또 다른
{
if(주문 선택(0,SELECT_BY_POS,MODE_TRADES))
{
if(주문 유형()==OP_SELL)
OrderClose(NULL,Lot,Ask,3);
리턴(0);
}
}

 
거의 정확합니다. 먼저 확인한 다음 노출하십시오.
 
frxmax :
다음을 작성하는 데 도움이 됩니다.

매수 신호가 있는 경우
공개 판매 주문 확인
있는 경우 닫습니다
그렇지 않은 경우 구매 열기
//  в ф-ции старт 
  
if (....условие покупки....){
     if (CalculateOrders( Symbol (),OP_SELL)> 0 ) Ord_Close( Symbol (),OP_SELL);
     Ticket(OP_BUY);      }

//-----------------------
int CalculateOrders( string simbol, int type)
  {
   int count= 0 ;
//----
   for ( int i= 0 ;i< OrdersTotal ();i++)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)==false) break ;
       if (OrderSymbol()==simbol)
        {
         if (OrderType()==type)  count++;
        
        }
     }
     
 return (count);
  }

//---------------------

void Ord_Close( string simb, int type) {   double price;
   
   if (type==OP_BUY)  price=MarketInfo(simb, MODE_BID); else
   if (type==OP_SELL) price=MarketInfo(simb, MODE_ASK);

   for ( int i= 0 ;i< OrdersTotal ();i++)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)==false)         break ;
       if ( OrderSymbol()!=simb || OrderMagicNumber()!=mn) continue ;
       //---- check order type 
       if (OrderType()==type)
        {  OrderClose(OrderTicket(),OrderLots(),price, 3 , White );   break ;  }
        
        
     }   
     
     
 } 
//-----------------------------

int Ticket( int op){
       double pp = MarketInfo( Symbol (), MODE_POINT);
       double pBid = MarketInfo( Symbol (), MODE_BID);
       double pAsk = MarketInfo( Symbol (), MODE_ASK); 
       double open_price;
       double T;
       color col= NULL ;
       int mn= 0 ;
      
   if (op== 0 ) {open_price=pAsk; col= Blue ; T=pAsk+Take*pp;}
   if (op== 1 ) {open_price=pBid; col= Red ;  T=pBid-Take*pp;}
   int res= OrderSend ( Symbol (),op, 0.1 ,open_price, 0 , 0 ,T, NULL ,mn, 0 ,col); 

   return (res);               }
 
KONDOR :

당신의 도움에 대해 대단히 감사합니다. 나는 조금 다르게 했고 당신의 접근 방식은 나에게 약간 이해하기 어렵습니다.

어떻게 판매할 수 있는지 설명해 주시겠습니까? 이 모든? 나는 여기에서 많이 이해하지 못한다.

당신은 나를 많이 도왔습니다.

 
frxmax :

나는 판매를 위해 모든 것을 뒤집으려고했지만 작동하지 않았습니다. 거래를 열지 않습니다

오류 130 . - 발이 정확하지 않습니다. 그래서 그들은 어디에 우리와 함께 있습니까?

이제 그는 각 막대에 대한 주문을 열지만 하나만 필요합니다.


총계=주문총계();

if(총<1)

등.

 
KONDOR :


흠, 그리고 나는 더 깊숙이 빠져들었습니다 - 물음 등으로 입찰가를 변경하십시오. 감사합니다)

발도 다루었다

사유: