Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 672

 
TarasBY :

Bu işlev çalışmadı. Varsayım - uçbirim bir kez bir karakter seçtiyse, aynı karakteri seçmeye yönelik bir sonraki girişim false döndürebilir. Bu işlevin dönüş kontrolünü yok saymaya çalışın.

Görünüşe göre SymbolSelect ("AUDUSD", doğru) yalnızca AUDUSD MarketWatch'ta değilse true değerini döndürür - yani. MarketWatch'a bir çift eklerken. Çift MarketWatch'a girdikten sonra sonraki çağrılar false döndürür.

Bu davranış, bu işlevin kılavuzuyla tamamen tutarsızdır.

Tüm SymbolName(i, true) öğelerini i=0..SymbolsTotal(true ) için tarayan, kendi yazdığım bir işlev aracılığıyla saptırmak zorunda kaldım.

 
Mr.Profit :

Görünüşe göre SymbolSelect("AUDUSD", true) yalnızca AUDUSD MarketWatch'ta değilse true döndürür - yani. MarketWatch'a bir çift eklerken. Çift MarketWatch'a girdikten sonra sonraki çağrılar false döndürür.

Bu davranış, bu işlevin kılavuzuyla tamamen tutarsızdır.

Bir şey bana SymbolSelect() olmadan yapabileceğinizi söylüyor.
 
TarasBY :
Bir şey bana SymbolSelect() olmadan yapabileceğinizi söylüyor.

evet üstteki mesajımı güncelledim
 
borilunad :

Ve başka ne, aksi halde bundan bacak yapmanız gerekiyor mu?!


Usta Forex

 
laveosa :
4 ay boyunca Alpari'ye bir baykuş oydum ..... nano quanto kodu çok zahmetli ve küçük değil ..... ve şimdi bu kadar !!!!! bu bir utanç .... belki hala bir şeyler yapılabilir?

Üçüncü baykuş. ve hala aynı hata, sorunun kodda olmadığına sevindim :)
 
işte yeni bir "Hayır" koydum ( indirmek için yüksek hızlı cam elyaf kablo var saniyede 7mb veriyor ) ve ondan sonra Alpari ile başladı böyle bir şey ama Master Forex ile her şey yolunda ve Admeral ayrıca matyukaets değil .... ..... işte başka bir nüans, komisyoncu D diskine kurulu :) OP sistemini yeniden kurarken, yeni bir tane kurmadım ve eskisini kullanmadım .... belki ihtiyacım var yüklemek için?
 
laveosa :


Usta Forex


Teşekkürler, bir bakacağım!
 
borilunad :

Teşekkürler, bir bakacağım!

savunmuyorum sadece soruyu cevaplıyorum :)
 

Merhaba. Çok uzun zaman önce danışman yazmaya başladım. Çözemediğim görünüşte basit bir problemle karşılaştım. Lütfen yardım et.

Sorun. Yeni bir onay işaretinde değişkenin değeri kaybolur.

Kısa Açıklama. OrderSend() fonksiyonunun dönüş değerini bir değişkene atarız ve return komutu ile çıkış yaparız. Bir sonraki tikte, değişkenin değeri sıfır olur.

Kaynak kodun ana düşmanı. Kaynağın tam metni aşağıdadır.

if (SAR_Prev>LastClose && SAR_Prev2<LastClose2)
{
int bilet_sell=SiparişGönder(Symbol(),OP_SELL,Lots,Bid,0,Ask+StopLoss*Point,Bid-TakeProfit *Nokta," ",111,0,Kırmızı);
Uyarı ("bilet_sell değişkeninin değeri atandı ", bilet_sell);
dönüş;
}
}

Alert("Pozisyon mevcut = ", position_exists, "Satın alma emri", bilet_buy, "Satış emri", bilet_sell);

Sonuç.

Ekran görüntüsü, pozisyonun başarıyla açıldığını ve sipariş biletinin ticket_sell değişkeninde saklandığını gösterir. Ancak, bir sonraki tikte, ticket_sell değişkeni sıfır olur. Ve bir siparişi bilete göre değiştiremiyorum/silemiyorum.

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

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 :

Merhaba. Çok uzun zaman önce danışman yazmaya başladım. Çözemediğim görünüşte basit bir problemle karşılaştım. Lütfen yardım et.

Sorun. Yeni bir onay işaretinde değişkenin değeri kaybolur.

Kısa Açıklama. OrderSend() fonksiyonunun dönüş değerini bir değişkene atarız ve return komutu ile çıkış yaparız. Bir sonraki tikte, değişkenin değeri sıfır olur.

Kaynak kodun ana düşmanı. Kaynağın tam metni aşağıdadır.

if (SAR_Prev>LastClose && SAR_Prev2<LastClose2)
{
int bilet_sell=SiparişGönder(Symbol(),OP_SELL,Lots,Bid,0,Ask+StopLoss*Point,Bid-TakeProfit *Nokta," ",111,0,Kırmızı);
Uyarı ("bilet_sell değişkeninin değeri atandı ", bilet_sell);
dönüş;
}
}

Alert("Pozisyon mevcut = ", position_exists, "Satın alma emri", bilet_buy, "Satış emri", bilet_sell);

Sonuç.

Ekran görüntüsü, pozisyonun başarıyla açıldığını ve sipariş biletinin ticket_sell değişkeninde saklandığını gösterir. Ancak, bir sonraki tikte, ticket_sell değişkeni sıfır olur. Ve bir siparişi bilete göre değiştiremiyorum/silemiyorum.


Değerin kaybolmaması için global bir değişkene ihtiyacınız var, bildirimini OnTick () dışına taşıyın veya statik yapın