포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 672

 
TarasBY :

이 기능이 작동하지 않았습니다. 가정 - 터미널이 문자를 한 번 선택한 경우 동일한 문자를 선택하려는 다음 시도는 false를 반환할 수 있습니다. 이 함수의 반환 확인을 무시하십시오.

SymbolSelect ("AUDUSD", true)는 AUDUSD가 MarketWatch에 없는 경우에만 true를 반환합니다. MarketWatch에 쌍을 추가할 때. 쌍이 MarketWatch에 있으면 후속 호출은 false를 반환합니다.

이 동작은 이 기능의 설명서와 완전히 일치하지 않습니다.

i=0..SymbolsTotal(true ) 에 대해 모든 SymbolName(i, true) 을 스캔하는 자체 작성 함수를 통해 변태해야 했습니다.

 
Mr.Profit :

SymbolSelect("AUDUSD", true)는 AUDUSD가 MarketWatch에 없는 경우에만 true를 반환합니다. MarketWatch에 쌍을 추가할 때. 쌍이 MarketWatch에 있으면 후속 호출은 false를 반환합니다.

이 동작은 이 기능의 설명서와 완전히 일치하지 않습니다.

SymbolSelect() 없이도 할 수 있다고 나와 있습니다.
 
TarasBY :
SymbolSelect() 없이도 할 수 있다고 나와 있습니다.

예, 방금 위의 내 게시물을 업데이트했습니다.
 
borilunad :

그리고 다른 것은 무엇입니까? 그렇지 않으면 이미 이것에서 다리를 만들어야합니다!


마스터 외환

 
laveosa :
4개월동안 Alpari에서 올빼미 조각했어요.....나노 콴토 코드가 너무 힘들고 작지않네요..... 그리고 이제 끝!!!!! 부끄럽습니다 .... 아직 할 수 있는 일이 있습니까?

세 번째 올빼미. 여전히 같은 오류지만 문제가 코드에 있지 않아 기쁩니다. :)
 
여기에 내가 새로운 "아니오" 넣은 것이 있습니다. 또한 matyukaets가 아닙니다 .... ..... 여기에 또 다른 뉘앙스가 있습니다. 브로커는 디스크 D에 설치됩니다 :) OP 시스템을 다시 설치할 때 새 시스템을 설치하지 않고 이전 시스템을 사용합니다.... 그것을 설치하려면?
 
laveosa :


마스터 외환


고마워, 내가 볼게요!
 
borilunad :

고마워, 내가 볼게요!

나는 단지 질문에 대답하는 것을 옹호하지 않습니다 :)
 

안녕하세요. 얼마 전에 나는 고문을 쓰기 시작했습니다. 나는 내가 풀 수 없어 보이는 간단한 문제에 부딪쳤다. 도와주세요.

문제. 새 틱에서 변수 값이 손실됩니다.

간단한 설명. OrderSend() 함수의 반환 값을 일부 변수에 할당하고 반환 명령으로 종료합니다. 다음 틱에서 변수 값은 0이 됩니다.

소스 코드의 주요 적. 소스의 전체 텍스트는 아래에 있습니다.

if (SAR_Prev>LastClose && SAR_Prev2<LastClose2)
{
int ticket_sell=OrderSend(Symbol(),OP_SELL,Lots,Bid,0,Ask+StopLoss*Point,Bid-TakeProfit *포인트," ",111,0,레드);
Alert("ticket_sell 변수 값 할당", ticket_sell);
반품;
}
}

Alert("위치 존재 = ", position_exists, "구매 주문", ticket_buy, "판매 주문", ticket_sell);

결과.

스크린샷은 위치가 성공적으로 열렸고 주문 티켓이 ticket_sell 변수에 저장되었음을 보여줍니다. 그러나 다음 틱에서 ticket_sell 변수는 0이 됩니다. 그리고 티켓으로 주문을 수정/삭제할 수 없습니다.

 // Простой параболик. Переворотная стратегия.
// В условиях, когда в терминале уже есть открытые позиции по другим инструментам.

input double TakeProfit    = 2500 ;
input double StopLoss      = 400 ;
input double Lots          = 1 ;
input double TrailingStop  = 100 ;

input double Parameter1    = 0.02 ; // Параметры индикатора PSAR
input double Parameter2    = 0.2 ;
   
void OnTick ()
{
int position_exists; // Переменная, принимающая значения 0 или 1. Указывает, открыта ли позиция по интструменту EURUSD

// Занесение в переменные значений индикатора на последнем и предпоследнем закрывшихся барах  
double SAR_Prev= iSAR ( NULL , 0 ,Parameter1,Parameter2, 1 );
double SAR_Prev2= iSAR ( NULL , 0 ,Parameter1,Parameter2, 2 );
// Занесение в переменные цен закрытия на последнем и предпоследнем барах
double LastClose=iClose( NULL , 0 , 1 );
double LastClose2=iClose( NULL , 0 , 2 );

  
//---------------------------------------------------------------------     
// Блок, который определяет, открыта ли позиция по инструменту EURUSD
// путём перебора всех открытых ордеров терминала в цикле. 
// Если позиция открыта, то переменной position_exists будет присвоено значение 1
int cnt;
string sym;
int type;

int total= OrdersTotal ();
position_exists= 0 ;
for (cnt= 0 ; cnt<=total- 1 ; cnt++)
   {
     bool select= OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);
    sym=OrderSymbol();
    type=OrderType();
     if (sym== "EURUSD" && (type== 1 || type== 0 )) 
      {
       position_exists= 1 ;
       break ;
      }
   }     
//--------------------------------------------------------------------- 
// Если позиция по EURUSD не существует, то проверяем условия открытия сделки  
   if (position_exists== 0 )
      {
       if (SAR_Prev<LastClose && SAR_Prev2>LastClose2)
         {
           int ticket_buy= OrderSend ( Symbol (),OP_BUY,Lots,Ask, 0 ,Bid-StopLoss* Point ,Ask+TakeProfit* Point , " " , 111 , 0 ,Blue);
           Alert ( "Присвоили значение пременной ticket_buy " , ticket_buy);
           return ;
         }
         
       if (SAR_Prev>LastClose && SAR_Prev2<LastClose2)
         {
           int ticket_sell= OrderSend ( Symbol (),OP_SELL,Lots,Bid, 0 ,Ask+StopLoss* Point ,Bid-TakeProfit* Point , " " , 111 , 0 ,Red);
           Alert ( "Присвоили значение пременной ticket_sell " , ticket_sell);
           return ;
         }
      }
      
   Alert ( "Существование позиции = " , position_exists, " Ордер на покупку " , ticket_buy, " Ордер на продажу " , ticket_sell);
//--------------------------------------------------------------------- 
// Если позиция по EURUSD существует, то проверяем условия закрытия позиции  
   if (position_exists== 1 )
      {
       if (ticket_sell== 0 ) // Если открытой позиции на продажу нет, то выбираем открытый ордер на покупку по тикету
         { bool select_buy= OrderSelect (ticket_buy,SELECT_BY_TICKET,MODE_TRADES);}
         
       if (ticket_buy== 0 ) // Если открытой позиции на покупку нет, то выбираем открытый ордер на продажу по тикету
         { bool select_sell= OrderSelect (ticket_sell,SELECT_BY_TICKET,MODE_TRADES);}
         
       
       if (OrderType()==OP_BUY) 
         {
           if (SAR_Prev>LastClose && SAR_Prev2<LastClose2) // Проверяем уловия для закрытия длинной позиции
              {
               bool close_buy=OrderClose(OrderTicket(),OrderLots(),Bid, 0 ,Violet);
               return ;
              }
         }
        
        
         if (OrderType()==OP_SELL)
         {
           if (SAR_Prev<LastClose && SAR_Prev2>LastClose2) // Проверяем уловия для закрытия короткой позиции
              {
               bool close_sell=OrderClose(OrderTicket(),OrderLots(),Ask, 0 ,Violet);
               return ;
              }
          } 
       }
} 

 
Sergey71 :

안녕하세요. 얼마 전에 나는 고문을 쓰기 시작했습니다. 나는 내가 풀 수 없는 것처럼 보이는 간단한 문제에 부딪쳤다. 도와주세요.

문제. 새 틱에서 변수 값이 손실됩니다.

간단한 설명. OrderSend() 함수의 반환 값을 일부 변수에 할당하고 반환 명령으로 종료합니다. 다음 틱에서 변수 값은 0이 됩니다.

소스 코드의 주요 적. 소스의 전체 텍스트는 아래에 있습니다.

if (SAR_Prev>LastClose && SAR_Prev2<LastClose2)
{
int ticket_sell=OrderSend(Symbol(),OP_SELL,Lots,Bid,0,Ask+StopLoss*Point,Bid-TakeProfit *포인트," ",111,0,레드);
Alert("ticket_sell 변수 값 할당", ticket_sell);
반품;
}
}

Alert("위치 존재 = ", position_exists, "구매 주문", ticket_buy, "판매 주문", ticket_sell);

결과.

스크린샷은 위치가 성공적으로 열렸고 주문 티켓이 ticket_sell 변수에 저장되었음을 보여줍니다. 그러나 다음 틱에서 ticket_sell 변수는 0이 됩니다. 그리고 티켓으로 주문을 수정/삭제할 수 없습니다.


값이 손실되지 않도록 전역 변수가 필요하거나 해당 선언을 OnTick () 외부로 이동하거나 정적으로 만듭니다.
사유: