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

 
컬러 MA 올로바.
 
감사해요
 

아직 트레이딩 기능 을 다루기는 어렵지만 프로그래밍은 조금 할 줄 압니다.

당신의 도움으로 이런 종류의 알고리즘을 구현하는 것이 좋을 것입니다.

if (구매 조건)

오픈 주문이 있는 경우

이 주문이 구매 조건이 트리거된 쌍에 대한 경우

판매용이라면

닫아

구매 오픈.

아 쓰는 걸 도와주세요, 난 이미 지쳤어요. 나는 아직도 이해할 수 없는 것을 많이 읽었다.

 
frxmax :

트레이딩 기능을 다루기는 어렵지만 프로그래밍은 조금 할 줄 압니다.

당신의 도움으로 이런 종류의 알고리즘을 구현하는 것이 좋을 것입니다.

1. if (구매조건)

2. 미결제 주문이 있는 경우

2.1. 이 주문이 구매 조건이 트리거된 쌍에 대한 경우

2.2. 판매용이라면

3. 닫아라

4. 구매를 위해 엽니다.

아 쓰는 걸 도와주세요, 난 이미 지쳤어요. 나는 아직도 이해할 수 없는 것을 많이 읽었다.


1. 구매조건이 어떻게 되나요?

2. 단말기의 시장가 주문 주기

2.1. 주기(항목 2)에서 선택한 주문 이 열려 있는 쌍을 확인하고 올바른 주문인 경우 ...

2.2. 선택한 주문의 종류를 확인하고 매도인지...

3. 선택한 주문을 닫습니다

4. 구매 주문 열기

아니면 완전한 코드가 필요합니까? 그렇다면 이것은 더 이상 도움이되지 않지만 불행한 일입니다 ... 그래도 ... 작동하지 않으면 쓸 것입니다. 문제를 알고 있습니다 ...

 

네, 제가 글을 쓰고 도움을 드렸습니다. 그리고 이 문제에서 "모든 사람은 자신의 진실을 가지고 있습니다".

여기 내 버전이 있습니다

 if (LoCurent>LoPrevious && FtCurent>FtPrevious)
      {
       ticket= OrderSend ( Symbol (),OP_BUY,Lot,Ask, 3 ,Bid-StopLoss* Point ,Bid+TakeProfit* Point , "Buy" , 1111 , 0 , Green );
       if (ticket> 0 )
          {
           if ( OrderSelect (ticket,SELECT_BY_TICKET,MODE_TRADES)) Print ( "BUY order opened : " ,OrderOpenPrice());
          }
         else Print ( "Error opening BUY order : " , GetLastError ()); 
         return ( 0 ); 
      }
// условие ПРОДАЖИ 
   if (LoCurent<LoPrevious && FtCurent<FtPrevious)
       {
        ticket= OrderSend ( Symbol (),OP_SELL,Lot,Bid, 3 ,Ask+StopLoss* Point ,Ask-TakeProfit* Point , "Sell" , 2222 , 0 , Red );
         if (ticket> 0 )
           {
             if ( OrderSelect (ticket,SELECT_BY_TICKET,MODE_TRADES)) Print ( "SELL order opened : " ,OrderOpenPrice());
           }
         else Print ( "Error opening SELL order : " , GetLastError ()); 
         return ( 0 ); 
        }    
     return ( 0 );
 // ЗАКРЫТИЕ СДЕЛОК
 for (cnt= 0 ;cnt<total;cnt++)
     {
       OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);
       if (OrderType()<=OP_SELL &&   // check for opened position 
         OrderSymbol()== Symbol ())   // check for symbol
        {
         if (OrderType()==OP_BUY)   // long position is opened
           {
           if (LoCurent<LoPrevious || FtCurent<FtPrevious || LoCurent<- 30 || LoPrevious<- 30 )
               {
                 OrderClose(OrderTicket(),OrderLots(),Bid, 3 , Violet ); // close position
                 return ( 0 ); // exit
               }
           } else
               {
                 if (LoCurent>LoPrevious || FtCurent>FtPrevious || LoCurent> 30 || LoPrevious> 30 )
                  {
                     OrderClose(OrderTicket(),OrderLots(),Ask, 3 , Violet ); // close position
                     return ( 0 ); // exit
                  }
                }
     }
        
     
 }
 

}

KONDOR의 다른 버전이 있습니다.

 if (LoCurent<LoPrevious)
     if (CalculateOrders( Symbol (),OP_SELL)> 0 ) Ord_Close( Symbol (),OP_SELL);
     if (total< 1 )
     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()!= 111 ) 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+TakeProfit*pp;}
   if (op== 1 ) {open_price=pBid; col= Red ;  T=pBid-TakeProfit*pp;}
   int res= OrderSend ( Symbol (),op,Lot,open_price, 1 ,Bid-StopLoss* Point ,Bid+TakeProfit* Point , NULL ,mn, 0 ,col); 

   return (res);               
 }
 

EA는 여전히 주문 개시 조건이 충족되면 각 가격 변동에 대해 거래를 개시합니다.

역방향 신호에서 주문을 마감하는 데는 또 다른 문제가 있습니다.

 
frxmax :

EA는 여전히 주문 개시 조건이 충족되면 각 가격 변동에 대해 거래를 개시합니다.

역방향 신호에서 주문을 마감하는 데는 또 다른 문제가 있습니다.

다르게 할 수 있습니다. TK를 작성하십시오(Sergeev 및 Composter가 요청한 대로). 그런 다음 작동 코드를 가져옵니다. 사실 모든 문제에 대한 해결책이 있습니다. 그리고 한 번도 포럼에 게시되지 않았습니다.
 

안녕하세요 여러분. Forex에 대해 들었지만 자세한 내용은 다루지 않았습니다. 저는 C 프로그래밍의 기본을 알고 있습니다.

수입을 가져다 줄 Forex 로봇을 프로그래밍하는 방법을 배우고 싶습니다.

그거 어렵 니? 정말 돈을 벌 수 있습니까? 최소 시작은 무엇입니까? 그리고 이것을 위해 무엇을 연구해야합니까?

 
Vinin :

다르게 할 수 있습니다. TK를 작성하십시오(Sergeev 및 Composter가 요청한 대로). 그런 다음 작동 코드를 가져옵니다. 사실 모든 문제에 대한 해결책이 있습니다. 포럼에 한 번도 게시되지 않았습니다.
작업 에 대한 위임 사항 을 올바르게 이해하고 있습니까?
 
frxmax :

1. EA는 주문 개시 조건이 충족되면 가격 변동이 있을 때마다 거래를 개시합니다.

2. 역 신호에서 주문을 마감하는 것과 관련된 또 다른 문제(매도 신호가 수신될 때 매수 주문을 포함하고 그 반대의 경우도 마찬가지).

상태:

1. 주문(구매)을 여는 조건이 있는 경우 미결 주문(구매)이 없으면 구매 주문을 엽니다. 마찬가지로 판매

2. 매수 주문을 여는 조건이 있으면 매도 주문이 열려 있으면 매도를 닫습니다.

따라서 우리는 다음을 얻습니다.

1. 매수주문을 개시하라는 신호가 있는 경우 ->>

2. 오픈 매도 주문이 있는 경우 ->
2.1 닫습니다.

3. 미결제 주문이 없는 경우 ->
3.1 엽니다.

마찬가지로 판매