[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 980

 

아이디어의 요지를 말씀드리겠습니다.

현재 막대에서 히스토리의 첫 번째 사용 가능한 화살표를 찾거나 결정해야 합니다.

그것이 무엇인지는 중요하지 않습니다 - 위 또는 아래.

(A) 그런 다음 이 결과를 변수나 플래그에 저장합니다. 예를 들어 GlobalFlag = -1(화살표가 아래쪽이면)이고 위쪽이면 +1입니다.

그러자 가격이 더 나아가 또 어떤 종류의 화살표가 그려졌다.

EA의 검색 주기는 매번 새 틱으로 시작되지 않습니까?

이 루프는 다시 실행되어 방금 그린 화살표를 찾아 변수나 플래그에 다시 저장한 다음

포인트 A가 충족되었습니다.

여기에 그러한 아이디어가 있습니다.

깃발과 물건을 왜 귀찮게합니까?

그런 다음 이 플래그, 즉 화살표가 표시되는 위치를 다른 표시기와 함께 사용하여 신호를 확인합니다.

예를 들어 GlobalFlag=+1(위쪽 화살표)과 다른 칠면조가 신호음을 내며 이는 우리가 시장에 진입 했음을 의미합니다.

즉, 지표의 두 조건을 모두 일치시킵니다.


그리고 이전에 작성한 이 코드가 마음에 드시나요?내가 원하는 것을 구현합니까?

즉, 어떤 촛불에 화살표가 있는지, 가격이 얼마인지 등을 계산할 필요가 없습니다. 가장 중요한 것은 사실을 수정하는 것입니다

화살표의 존재와 방향.

+1 및 -1 대신 true와 false를 할당할 수 있습니까 ???? 아니면?


 double DataIndUP, DataIndDN;
int     i, GlobalFlag, nBars = 250 ;   // nBars = количество проверяемых баров вглубь истории

for (i= 0 ; i<nBars; i++) 
{
   DataIndUP = iCustom ( Symbol (), Period (), "Имя индюшонка" , через запятую все параметры индюка , номер буфера стрелки вверх, i)
   DataIndDN = iCustom ( Symbol (), Period (), "Имя индюшонка" , через запятую все параметры индюка , номер буфера стрелки вниз, i)
   if (DataIndUP != EMPTY_VALUE )     // или if (DataIndUP !=0) // найдена стрелка вверх
                                     // всё зависит от того, что выдаёт буфер при отсутствии стрелки 
                                     // нажмите Ctrl+D и посмотрите что вам в окне данных будет показано
      GlobalFlag=+1                 // присвоение значения +1(стрелка вверх)  переменной 
      Break;                        //выход из цикла, так как  нашлась последняя стрелка
if (DataIndDN != EMPTY_VALUE )     // или if (DataIndDN !=0) // найдена стрелка вниз
                                     // всё зависит от того, что выдаёт буфер при отсутствии стрелки 
                                     // нажмите Ctrl+D и посмотрите что вам в окне данных будет показано
      GlobalFlag=-1                 // присвоение значения -1(стрелка вниз) переменной
      Break;                        //выход из цикла, так как  нашлась последняя стрелка
}
 
Tupen :


이것은 시작입니다.


따라서 진입점 A -- 판매 및 구매 비용은 4점입니다. 행동의 1 변형 - 가격이 하락합니다. - 진입점에서 5포인트 후에 이익을 수정합니다. - 포인트 A(준비 과정에서 수익 고정 전 포인트, 최소까지 변동될 것으로 생각합니다)도 가격이 오르면. 저것들. 프로그램은 즉시 4개의 주문을 해야 합니다.)) 이것을 프로그래밍할 수 있습니까?
 
Roman. :



은폐된 욕설로 게시물 삭제

 
Vinin :

은폐된 욕설로 게시물 삭제


죄송합니다, 관대하게, 나는 나 자신을 도울 수 없었습니다. 비엔나 숲의 이야기에 질려...
 

4개의 주문으로 프로그램을 작성하십시오. 당신은 데모를보고 반전 옵션을 끝까지 생각해야합니다

 
Tupen :

4개의 주문으로 프로그램을 작성하십시오. 당신은 데모를보고 반전 옵션을 끝까지 생각해야합니다


"Avalanche"지점을 참조하십시오. 모든 것이 "모든 것"으로 철저히 고려됩니다. "반전 옵션을 고려했습니다.

바퀴를 재발명해야 하는 이유... 모든 것은 사람들이 오랫동안 생각해 온 것입니다. 읽고, 분석하고, 사용하고 즐기십시오.

곧 "이"자전거 (읽기, 결정)에 가까워지지 않을 것입니다 ...

 

주기성이 없는 이유를 말해보시오. 테스터에서 EA는 2개의 거래만 엽니다.

외부 정수 F = 8; //빠른 MA 기간
외부 정수 S = 20; // 느린 MA 기간
extern 이중 랏 = 0.1; // 주문 로트
int 미끄러짐 = 5; // 단락에서 미끄러짐.
정수 마법 = 123; // 전문가의 매직 넘버
INT 매표소;
int 티켓 구매;
정수 시작()
{
이중 MAfast = iMA(NULL,0,F,0,MODE_SMA,PRICE_CLOSE,1);
이중 MAslow = iMA(NULL,0,S,0,MODE_SMA,PRICE_CLOSE,1);
// 터미널에 티켓 판매 티켓이 있는 주문이 없거나 닫혀 있고 빠른 MA가 느린 MA보다 낮습니다. 매도 !
if ( (OrderSelect(ticketsell,SELECT_BY_TICKET,MODE_TRADES) == false ) && MAfast < MAslow )
{
// 반대 주문이 있으면 구매하고 닫습니다.
if ( OrderSelect(ticketbuy,SELECT_BY_TICKET,MODE_TRADES) == true )
OrderClose(OrderTicket(), OrderLots(), 입찰, 슬리피지, CLR_NONE );
티켓 판매 = OrderSend(Symbol(),OP_SELL,랏,입찰가,슬립페이지,0,0,0,매직,0,빨간색);
}
if ( (OrderSelect(ticketbuy,SELECT_BY_TICKET,MODE_TRADES) == false ) && MAfast > MAslow )
{
if ( OrderSelect(ticketsell,SELECT_BY_TICKET,MODE_TRADES) == true )
OrderClose(OrderTicket(), OrderLots(), 묻기, 미끄러짐, CLR_NONE);
ticketbuy = OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,0,Magic,0,Blue);
}
반환(0);
}

 

이것을 시도하십시오

 extern int F = 8 ; //период быстрой МА
extern int S = 20 ; //период медл.МА
extern double Lots = 0.1 ; // лот ордера
int Slippage = 5 ; // проскальзывание в пп.
int Magic = 123 ; // магический номер эксперта
int ticketsell;  
int ticketbuy;

int start()
{
   double MAfast = iMA ( NULL , 0 ,F, 0 , MODE_SMA , PRICE_CLOSE , 1 );
   double MAslow = iMA ( NULL , 0 ,S, 0 , MODE_SMA , PRICE_CLOSE , 1 ); 
   
   ticketsell = - 1 ;
   ticketbuy = - 1 ;
   for ( int i = 0 ; i < OrdersTotal (); i++)
   {
       OrderSelect ( i, SELECT_BY_POS, MODE_TRADES);
       if (OrderSymbol() == Symbol () && OrderMagicNumber() == Magic)
      {
         if (OrderType() == OP_SELL) ticketsell = OrderTicket();
         if (OrderType() == OP_BUY)  ticketbuy  = OrderTicket();
      }
    }
   // ордера с тикетом ticketsell в терминале нету ИЛИ он закрылся И быстрая МА ниже медленной, продаем !
   if ( ( OrderSelect (ticketsell,SELECT_BY_TICKET,MODE_TRADES) == false ) && MAfast < MAslow )
   {
       // если у нас при этом был противоположный ордер, бай, его закроем :
       if ( OrderSelect (ticketbuy,SELECT_BY_TICKET,MODE_TRADES) == true )
         OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, CLR_NONE );
      ticketsell = OrderSend ( Symbol (),OP_SELL,Lots,Bid,Slippage, 0 , 0 , 0 ,Magic, 0 , Red );
   } 
   if ( ( OrderSelect (ticketbuy,SELECT_BY_TICKET,MODE_TRADES) == false ) && MAfast > MAslow )
   {
       if ( OrderSelect (ticketsell,SELECT_BY_TICKET,MODE_TRADES) == true )
         OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, CLR_NONE );
      ticketbuy = OrderSend ( Symbol (),OP_BUY,Lots,Ask,Slippage, 0 , 0 , 0 ,Magic, 0 , Blue );
   }
   return ( 0 );
} 
 
고맙습니다!
 

내 질문은 답이 없었다.

그래도 표시기에서 들어오는 신호 수를 어떻게 필터링할 수 있습니까? 예를 들어, EA가 작업 번호 3을 시작하라는 신호를 수락하려면, 즉 처음 두 신호가 전달되고 세 번째 신호가 실행됩니다. 위에서 쓴 것처럼 전역 변수 를 통해 이것을 구현하려고했지만 뭔가 작동하지 않습니다....