[Arşivle!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 2. - sayfa 227

 
drknn :

Kaymayı artırın. Hızlı bir piyasada anlaşmalar açılmış gibi görünüyor. Bazen önemli bir haberden sonra aynı Eurobucks'ın 1-2 vuruşta patladığı oluyor, ki bu sadece bir kabus. Sunucu, danışmanın siparişini işlerken, fiyat çok hızlı değişiyor.


Korkarım Slippage her zaman büyükse, DC bunu sistematik olarak kötüye kullanmaya başlayabilir. Dinamik olarak "itmek" istiyorum - yalnızca sunucudaki fiyatın siparişin gönderildiği fiyattan daha iyi olduğu ortaya çıkarsa. Bir uygulamayı manuel olarak yerleştirmeye benzeterek - istenen fiyat artık orada değilse, Tamam veya reddet'i tıklayarak kabul edebileceğiniz yeni bir fiyat teklif edilir - bu elbette aynı durumsa.

 

Herkese merhaba! Lütfen aşağıdaki şeyleri birleştirmeme yardım edin. Sonuç olarak, ortaya çıkmalı: fiyatı takip eden iki satır, 20p'ye kadar Sor'un altında bir satır,

diğeri daha yüksektir ve fiyat 20p değiştiğinde sesli bir sinyal de verilir. 1 tik için.

Ayrı ayrı her şey akıllıca çalışıyor ama bir araya getiremiyorum. Şimdiden teşekkürler!

1) Hat 20p'ye kadar Sor'un altındadır.

 //+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int start()
{
ObjectCreate ( "MyPriceLine" , OBJ_HLINE , 0 , 0 , Ask- 20 * Point ) ;
ObjectSet( "MyPriceLine" , OBJPROP_PRICE1, Ask- 20 * Point );
return ( 0 );
}

//+------------------------------------------------------------------+

2) Hat, 20p'ye kadar Sor'un üzerindedir.

 //+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int start()
{
ObjectCreate ( "MyPriceLine" , OBJ_HLINE , 0 , 0 , Ask+ 20 * Point ) ;
ObjectSet( "MyPriceLine" , OBJPROP_PRICE1, Ask+ 20 * Point );
return ( 0 );
}

//+------------------------------------------------------------------+

3) Zaman içinde fiyat değişim oranı .

 #property show_inputs

extern int pips= 2 ; //изменение аск
extern double Time_= 0.1 ; //c. ~ tick
extern bool все_из_обзора_рынка=true; // только текущий символ - false

int i, l, p, количество_символов;
string val[], на_экран;
int Ask_save[];

//+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
void start(){
количество_символов=SymbolsList(val, true); //запись в массив val инструменты и их количество вызов функции SymbolsList
ArrayResize (Ask_save,количество_символов);
if (количество_символов == - 1 ){ Alert ( "Ошибка открытия файла в SymbolsList(string &Symbols[], bool Selected)" ); return ;}
if (!все_из_обзора_рынка){
количество_символов= 1 ;
ArrayResize (Ask_save,количество_символов);
ArrayResize (val,количество_символов);
val[ 0 ]= Symbol ();
}

while (true&&! IsStopped ()){ //если разрешить и не отанавливать скрипт продолжим

Alert ( "пересчитаем через " +Time_+ " сек." );

for (i= 0 ;i<количество_символов;i++){ //посчитаем стоимость спреда для инструментов из обзора рынка
if ((Ask_save[i]-MarketInfo(val[i],MODE_ASK)/MarketInfo(val[i],MODE_POINT))>=pips){
Alert (val[i]+ "," + Period ()+ " изменился вниз на " +DoubleToStr((Ask_save[i]-MarketInfo(val[i],MODE_ASK)/MarketInfo(val[i],MODE_POINT)), 0 )+ " pips" );
PlaySound ( "timeout.wav" );
}
if ((MarketInfo(val[i],MODE_ASK)/MarketInfo(val[i],MODE_POINT)-Ask_save[i])>=pips){
Alert (val[i]+ "," + Period ()+ " изменился вверх на " +DoubleToStr((MarketInfo(val[i],MODE_ASK)/MarketInfo(val[i],MODE_POINT)-Ask_save[i]), 0 )+ " pips" );
PlaySound ( "email.wav" );
}
Ask_save[i]=MarketInfo(val[i],MODE_ASK)/MarketInfo(val[i],MODE_POINT);
}
Sleep (Time_* 1000 ); //пауза сек.
}

/*
количество_символов=SymbolsList(val, true);//запись в массив val инструменты и их количество вызов функции SymbolsList
if(количество_символов == -1){ Alert("Ошибка открытия файла в SymbolsList(string &Symbols[], bool Selected)"); return;}

while(true&&!IsStopped()){ //если разрешить и не отанавливать скрипт продолжим
на_экран="\r\n"; //отступ
for(i=0;i<количество_символов;i++)//посчитаем стоимость спреда для инструментов из обзора рынка
на_экран=на_экран+val[i]+" стоимость спреда = " + DoubleToStr(MarketInfo(val[i],MODE_SPREAD)*MarketInfo(val[i],MODE_TICKVALUE),0)+"\r\n";
Comment(на_экран);//выведем на экран
Alert("Пересчитаем");//сигнал
Sleep(3000);//пауза 3 сек.
}
*/
}
void deinit(){ Comment ( "" );}
//+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=


//+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
// функция читает из обзора рынка все фин.инстр.
//+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
int SymbolsList( string &Symbols[], bool Selected){
int Offset, SymbolsNumber; string SymbolsFileName;
if (Selected) SymbolsFileName = "symbols.sel" ; else SymbolsFileName = "symbols.raw" ;
int hFile = FileOpenHistory(SymbolsFileName, FILE_BIN | FILE_READ );
if (hFile < 0 ) return (- 1 ); if (Selected) { SymbolsNumber = ( FileSize (hFile) - 4 ) / 128 ; Offset = 116 ; }
else { SymbolsNumber = FileSize (hFile) / 1936 ; Offset = 1924 ; }
ArrayResize (Symbols, SymbolsNumber);
if (Selected) FileSeek (hFile, 4 , SEEK_SET );
for ( int i = 0 ; i < SymbolsNumber; i++){Symbols[i] = FileReadString (hFile, 12 ); FileSeek (hFile, Offset, SEEK_CUR );}
FileClose (hFile);
return (SymbolsNumber);
}
 
Vovo4ka :

Akıllı bir Petrosyan şaka yapmak istiyor gibi ..))

Yukarıdakiler için çok üzgünüm, para sizin. Ne kadar çok olursan bizim için o kadar iyi.
 
ScioMe :

Sadece MetaEditor'da standart bir iMA göstergesi var. Sağlığınızın tadını çıkarın :)
Lütfen bana tam olarak nereden alacağımı ve nereye koyacağımı söyle, ben hala bir çaydanlık ...
 
Vovo4ka :
İnsanlar! Riske bağlı olarak çok fazla ticaret yaptığımdan emin olmaya çalışıyorum .... iyi, işe yaramıyor .... yazıyor

lütfen hata nerede söyleyin...

İşlem geçmişinizde gerekli türden yalnızca bir siparişiniz mi var?

 if (OrderProfit()> 0 ) break ;

Karanlığa kapalı bir düzen varsa döngünün dışına düşeriz ve geçmişin geri kalanını kontrol etmeyiz...

 int     orders= HistoryTotal() ;     // history orders tota l

Bu senin kendi işlevin mi? Veya OrdersHistoryTotal() ???

Her nasılsa, kârsız siparişlerin sayısı için aramayı karıştırıyor. Son kapalı olana ihtiyacınız varsa, sonuncusu olduğuna dair kontrol nerede?

İşte kendi kendini analiz için ödevin:

 int losses= 0 ;
for ( int i= 0 ; i<OrdersHistoryTotal(); i++) {                 // Цикл по истории терминала
   if ( OrderSelect (i,SELECT_BY_POS,MODE_HISTORY)) {         // Если ордер выбран ...
       if (OrderSymbol()!= Symbol ())     continue ;             // Если символ ордера не наш -  к следующему ордеру
       if (OrderType()>OP_SELL)         continue ;             // Если тип ордера не наш -     к следующему ордеру
       if (OrderMagicNumber()!=Magic)   continue ;             // Если магик ордера не наш -   к следующему ордеру
       if (OrderProfit()>= 0 )             continue ;             // Если профит ордера в плюсе - к следующему ордеру
       if (OrderProfit()< 0 )                                   // Ордер закрыт в минусе ...
         losses++;                                           // Увеличиваем счётчик убыточных ордеров      
      }
   else if (! OrderSelect (i,SELECT_BY_POS,MODE_HISTORY)) {   // Если не удалось выбрать ордер ...
       Print ( "Error in history! " , GetLastError ());           // Сообщим об ошибке и посмотрим её код
       break ;                                                 // Прерываем цикл перебора ордеров
      }
   }

Ve işte başka bir şey:

 if (ldlot< 0.1 ) ldlot= 0.1 ;

Belki izin verilen minimumdan daha azını kontrol etmek daha iyidir?

 double MinLot=MarketInfo( Symbol (),MODE_MINLOT);
if (ldlot<MinLot) ldlot=MinLot;

Ve aynı zamanda, maksimumdan daha fazla (parti büyüklüğünü işleve geçirirken)?

 double MaxLot=MarketInfo( Symbol (),MODE_MAXLOT);
if (ldlot>MaxLot) ldlot=MaxLot;
 
doon :

Teşekkürler, ama yine de oraya bir fiş eklemeniz gerekiyor.

Anlamıyorum, neden orada gerekli? Bana öyle geliyor ki her şey basit.
 
ZZZEROXXX :


Korkarım Slippage her zaman büyükse, DC bunu sistematik olarak kötüye kullanmaya başlayabilir.

DC kötüye kullanmaya başlarsa, hiçbir şey yardımcı olmaz. İşte işe yarayabilecek başka bir şey. DC'nizdeki formalar dalgalanıyorsa, o zaman forma boyutunun otomatik tespitini danışmanın başlatma işlevine koymak ve kaymayı örneğin üç forma ayarlamak daha iyidir. Daha sonra kayma dinamik olarak değişir.
 
Söylesene, biletle siparişlerle çalışıyorsanız, bir değişkeni (int Ticket), statik yerel veya normal global veya genel olarak normal yerel olarak nasıl doğru bir şekilde yazabilirim? Lanet olsun kafam karıştı. Teşekkür ederim.
 
Fam :
Söylesene, biletle siparişlerle çalışıyorsanız, bir değişkeni (int Ticket), statik yerel veya normal global veya genel olarak normal yerel olarak nasıl doğru bir şekilde yazabilirim? Lanet olsun kafam karıştı. Teşekkür ederim.

Her şey, bu değişkenin danışmanın tüm işlevleri için kullanılabilir olup olmayacağına bağlıdır (pekala... hepsi için değil, bazıları için - kesinlikle). Sonra - küresel.

Yalnızca bir işlevde kullanılıyorsa - o zaman yerel.

"Çiçekler hangi suya koyulur, sade mi şekerli mi" kategorisinden bir soru...

 
ZZZEROXXX :


Korkarım Slippage her zaman büyükse, DC bunu sistematik olarak kötüye kullanmaya başlayabilir. Dinamik olarak "itmek" istiyorum - yalnızca sunucudaki fiyatın siparişin gönderildiği fiyattan daha iyi olduğu ortaya çıkarsa. Bir uygulamayı manuel olarak yerleştirmeye benzeterek - istenen fiyat artık orada değilse, Tamam veya reddet'i tıklayarak kabul edebileceğiniz yeni bir fiyat teklif edilir - bu elbette aynı durumsa.

Kaymayı önce volatiliteye bağlı hale getirmeyi deneyin. Sakin bir piyasada minimum olacak, hızlı bir piyasada genişleyecektir.