[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 700

 
cyclik33 :


Kodun neden olması gerektiği gibi çalışmadığını size cevapladım - hiç yanlış yere kaydettiniz ... :) Tekerlekleri söküp bagaja koyarsanız, uzağa gitmeyeceğinizi düşünüyorum. tekerlekler müsait ve kapılar kapanıyor gibi... :)
 
TG :

soru banal olabilir, danışman M1'de işlem görüyor, bir emir açmak için bir sinyal alındı, stopun kısa olduğunu ve emrin bir sonrakinde kapatıldığını varsayalım. ama açılma durumu hala orada.

Siparişin aynı dakikada tekrar açılmaması için en iyi yol nedir? Bir sonrakine ne dersin? şimdiden teşekkürler!

Yeni bir mumun açılışını kontrol edin. Yeniyse - açık, eskiyse - hayır ...
 
ToLik_SRGV :

OrderSelect() işlevindeki sayı sayısı sıfırdan başlar. Ve 1 tane var, yani piyasada sadece bir tane olmasına rağmen ikinci bir sipariş arıyorsunuz ve bu yüzden çalışmıyor.

Teşekkürler, unutmuşum.
 
ToLik_SRGV :

Boris, kodda küçük bir düzeltme, orijinal partiye dönerken dizi konumunun bir sıfırlamasını eklemeyi unuttum:


Tolik söyle lütfen, benim için garip bir şekilde çalışıyor. Karsız olandan sonra, ilk lotu açabilir, eğer bu kârsızsa, sonra tekrar ilk lotu açabilir.

Ve bazen, ilk kaybedenden sonra 0.4'ü kırıyor.

Bir şeyi yanlış yere koymuş olmalıyım?

 
cyclik33 :


Tolik söyle bana lütfen, benim için garip bir şekilde çalışıyor. Karsız olandan sonra, ilk lotu açabilir, eğer bu kârsızsa, sonra tekrar ilk lotu açabilir.
Ve bazen, ilk kaybedenden sonra 0.4'ü kırıyor.
Bir şeyi yanlış yere koymuş olmalıyım?

Boris, kodda küçük bir düzeltme, orijinal partiye dönerken dizi konumunun bir sıfırlamasını eklemeyi unuttum:

 //+------------------------------------------------------------------+
double getMartinLot( double lot, double arrayLot[]){ //ФУНКЦИЯ УПРАВЛЕНИЯ ОБъЕМОМ ТОРГОВ ПО СИСТЕМЕ МАРТИНГЕЙЛА
   static double balance_before, balance_after;    //ДЛЯ ХРАНЕНИЯ СОСТОЯНИЯ БАЛАНСА ДО И ПОСЛЕ СДЕЛОК
   static double save_Lot;   
   static int loop;
   if (loop == ArraySize (arrayLot))loop = 0 ;   
   balance_after = AccountBalance();               //СОХРАНЕНИЕ ТЕКУЩЕГО СОСТОЯНИЯ БАЛАНСА   
   if (balance_after >= balance_before){            //ПРОВЕРКА ИЗМЕНЕНИЯ БАЛАНСА
      save_Lot = lot;                              //ЕСЛИ ОН НЕ ИЗМЕНИЛСЯ ИЛИ СТАЛ БОЛЬШЕ, ТО СБРАСЫВАЕМ ЛОТ ДО БАЗОВОГО
      loop = 0 ;
   } else {
      save_Lot = arrayLot[loop];                   //ЕСЛИ СТАЛ МЕНЬШЕ ТО УВЕЛИЧИВАЕМ ЛОТ
      loop++;
   }
   balance_before = balance_after;                 //СОХРАНЯЕМ СОСТОЯНИЕ БАЛАНСА ПОСЛЕ РАБОТЫ
   return (save_Lot);
}
//+------------------------------------------------------------------+
 
artmedia70 :
Kodun neden olması gerektiği gibi çalışmadığını size cevapladım - hiç yanlış yere kaydettiniz ... :) Tekerlekleri söküp bagaja koyarsanız, uzağa gitmeyeceğinizi düşünüyorum. tekerlekler müsait ve kapılar kapanıyor gibi... :)


Kesinlikle sana katılıyorum. Ama sonuçta, kodunuzu en ufak bir şekilde eleştirmedim, sadece onunla sorunlarım olduğunu söyledim), bu arada, yine de onunla bir sorunum vardı, eğer zor değilse - bana neyin yanlış olduğunu söyleyin, gerçekten neyi yanlış yaptığımı anlamak istiyorum.

dış renk colorOpenBuy = Mavi;
dış renk rengiCloseBuy = Aqua;
dış renk colorOpenSell = Kırmızı;
dış renk rengiKapatSat = Aqua;


geçersiz tanım() {
yorum ("");
}

double Lots_New = Lot;


//+------------------------------------------- --------------------+
//| |
//+------------------------------------------- --------------------+

int start(){
if (lFlagUseHourTrade){
if (!(Hour()>=nFromHourTrade && Hour()<=nToHourTrade)) {
Comment("Ticaret zamanı daha gelmedi!");
dönüş(0);

Önerdiğiniz gibi, Başlat işlevinden önce buraya ekledim, ancak derlerken 'Lot' diyor - başlatma bekleniyor D:\MetaTrader\experts\Prostoj_2.mq4 (39, 20)

Söyle bana, lütfen, ne olabilir?

 
artmedia70 :
Yeni bir mumun açılışını kontrol edin. Yeniyse - açık, eskiyse - hayır ...
ve nasıl daha iyi yapılır?
 
cyclik33 :


Kesinlikle sana katılıyorum. Ama sonuçta, kodunuzu en ufak bir şekilde eleştirmedim, sadece onunla sorunlarım olduğunu söyledim), bu arada, yine de onunla bir sorunum vardı, eğer zor değilse - bana neyin yanlış olduğunu söyleyin, gerçekten neyi yanlış yaptığımı anlamak istiyorum.

dış renk colorOpenBuy = Mavi;
dış renk rengiCloseBuy = Aqua;
dış renk colorOpenSell = Kırmızı;
dış renk rengiKapatSat = Aqua;


geçersiz tanım() {
Yorum("");
}

double Lots_New = Lot;


//+------------------------------------------- --------------------+
//| |
//+------------------------------------------- --------------------+

int start(){
if (lFlagUseHourTrade){
if (!(Hour()>=nFromHourTrade && Hour()<=nToHourTrade)) {
Comment("Ticaret zamanı daha gelmedi!");
dönüş(0);

Önerdiğiniz gibi Başlat işlevinden önce buraya ekledim, ancak derleme sırasında 'Lot' diyor - başlatma bekleniyor D:\MetaTrader\experts\Prostoj_2.mq4 (39, 20)

Söyle bana, lütfen, ne olabilir?

Lot'unuz nerede başlatıldı?

 extern color colorOpenBuy = Blue ;
extern color colorCloseBuy = Aqua ;
extern color colorOpenSell = Red ;
extern color colorCloseSell = Aqua ;
extern double Lot = 0.1 ;
double Lots_New;

void deinit() {
Comment ( "" );
}

//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+

int start(){
if (lFlagUseHourTrade){
if (!(Hour()>=nFromHourTrade && Hour()<=nToHourTrade)) {
Comment ( "Time for trade has not come else!" );
return ( 0 );

Ayrıca, yalnızca geyiği kontrol ettikten sonra, daha önce yazıldığı gibi Lots_New'i değiştirin veya ona = Lot değerini atayın;

 

Evet efendim... Dizilerde zorlanıyorum... Diziyi indükleyicinin verileriyle doldurmaya çalışıyorum, ma-a-a-lazy işlevi beni büyük bir çıkmaza soktu.. Söyle bana, neyi yanlış yapıyorum?

 double       TempIND[ 50 ]; 
void    SaveDataIND( double TempIND[], int nBars)
{
   ArrayResize (TempIND,nBars);
   for ( int j= 0 ; j<=nBars- 1 ; j++)
      {
         TempIND[j]= iAD ( NULL , PERIOD_M5 ,j);       // ЗДЕСЬ ОШИБКА array item cannot be assigned
         Print ( "TempIND[" ,j, "] = " ,TempIND[j]);
      }

}

şöyle sesleniyorum:

SaveDataIND(TempIND, 20 );
Köpek nerede kazdı?
 
artmedia70 :

Evet efendim... Dizilerde zorlanıyorum... Diziyi indükleyicinin verileriyle doldurmaya çalışıyorum, tembel fonksiyon beni büyük bir çıkmaza soktu... Söyle bana ne yanlış mı yapıyorum

şöyle sesleniyorum:

Köpek nerede kazdı?



Köpeğiniz, SaveDataIND(double TempIND[]) gibi iletirseniz, parametreleri bir işleve ileterek karıştırdı

o zaman double TempIND[ ] aslında işlev için yeni bir dizidir, ancak parametreleri değiştirme hakkı olmadan SaveDataIND(double & TempIND[]) deneyin