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

 
işletim sistemi yeniden yükleme. MT4 işletim sistemini yeniden yüklemeden önceki durumunda yeniden yükledikten sonra nasıl geri yüklenir.
Göstergeler, Uzman Danışmanlar, senaryolar; şablonlar, profiller; hesaplar
 
AlexandrL :
işletim sistemi yeniden yükleme. MT4 işletim sistemini yeniden yüklemeden önceki durumunda yeniden yükledikten sonra nasıl geri yüklenir.
Göstergeler, Uzman Danışmanlar, senaryolar; şablonlar, profiller; hesaplar
Yeniden yüklemeden önce terminal klasörünü bir flash sürücüye kopyalayın. Yedi ve üstü ise - o zaman paylaşılan klasör. Ayrıntılar burada
 

Tünaydın.

Ok göstergesi danışmanı.

Üst fraktalda sat, altta satın al. maks. 1 sipariş. Ama bir yerde bir hata var, çünkü. danışman fraktalları dikkate almaz ve yalnızca satın almada açılır. Veya hiç açılmıyor (iCustom'da vardiyayı değiştirirseniz). Expert Advisor'a (farenin kesiştiği noktada) başka bir koşul eklemeye çalıştım. Her şey çalışıyor, ancak kadranlı göstergeden veri almıyor.

gösterge:

 //+------------------------------------------------------------------+
//|                                                   MI_Fractal.mq4 |
//|                                                     Орешкин А.В. |
//|                                        http://www.vk.com/mtforex |
//+------------------------------------------------------------------+
#property copyright "Орешкин А.В."
#property link        "http://www.vk.com/mtforex"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Aqua
#property indicator_color2 Yellow
#property indicator_width1 2
#property indicator_width2 2

//--- input parameters
extern int        leftBars= 10 ;
extern int        rightBars= 2 ;
extern int        difference= 10 ;
//extern int       maximumBars=1000;
extern bool       showUp= true ;
extern bool       showDown= true ;

bool   UP_Fractal,DOWN_Fractal;
double DEF,up[],down[];

int init()
  {
   DEF= NormalizeDouble (difference* Point , Digits );
   SetIndexBuffer ( 0 ,up);
   SetIndexBuffer ( 1 ,down);
   SetIndexStyle( 0 , DRAW_ARROW );
   SetIndexStyle( 1 , DRAW_ARROW );    
   SetIndexArrow( 0 , 217 );
   SetIndexArrow( 1 , 218 );
   return ( 0 );
  }

int deinit(){ return ( 0 );}

int start()
  {   
   //for (int i=maximumBars;i>rightBars;i--)
   for ( int i= Bars -IndicatorCounted()-leftBars- 1 ;i>rightBars;i--)   
      { //3
      UP_Fractal= true ;DOWN_Fractal= true ;
      
       for ( int x=i+leftBars;x>=i-rightBars;x--)
         { //0
         if (x==i) continue ;
         if (High[i]-High[x]<DEF) UP_Fractal= false ;
         if (Low[x]-Low[i]<DEF) DOWN_Fractal= false ;
         } //0
      
      up[i]=EMPTY;
      down[i]=EMPTY;
      
       if (showUp)   
         if (UP_Fractal && !DOWN_Fractal) up[i]=High[i];
      
       if (showDown)   
         if (!UP_Fractal && DOWN_Fractal) down[i]=Low[i]; 
      } //3
   return ( 0 );
  }


Baykuş kodu:

 double upFr= iCustom ( Symbol (), 0 , "MI_Fractal" ,leftBars,rightBars,difference,showUp,showDown, 0 , 1 );
double downFr= iCustom ( Symbol (), 0 , "MI_Fractal" ,leftBars,rightBars,difference,showUp,showDown, 1 , 1 ); 
     
   if (upFr!= EMPTY_VALUE )   
   //if (upFr<2) 
   //if (upFr>0)    
     {   
                                          
       Alert (upFr); 
      Opn_S= true ;                             
       //Cls_B=true;                                
     }
 if (downFr!= EMPTY_VALUE )
   //if (downFr<2)
 //  if (downFr>0)                                              
     {                                         
     Opn_B= true ;                              
     //Cls_S=true;                             
     }

Zaten birçok farklı çözüm denedim, işe yaramıyor. Lütfen bana hatanın nerede olduğunu söyle.

Dosyalar:
 

Tünaydın.

Salı günü ilk çubuğun açılış fiyatını bulmama yardım et ve tüm hafta boyunca ondan hesap yapabilmem için düzelt.

Teşekkür ederim.

 

Merhaba, birisi bana buraya ne girmem gerektiğini söylerse minnettar olacağım, böylece danışman tetiklendikten sonra beklemede açılmayı durdurur.

//+------------------------------------------- --------------------+
//| Telif hakkı © 2014, Khlystov Vladimir |
//| http://cmillion.narod.ru |
//+------------------------------------------- --------------------+
#property telif hakkı "Telif hakkı © 2014, cmillion@narod.ru"
#özellik bağlantısı "http://cmillion.ru"
#mülkiyet katı
#property description "EA, piyasa dalgalanmalarına göre işlem yapar ve herhangi bir gösterge kullanmaz."
#property description "EA'nın fikri, stop emirlerinin mevcut fiyattan belirli bir mesafede ayrı ayrı hareket etmesidir."
#özellik açıklaması "Fiyat bir yönde yeterince keskin bir şekilde hareket ederse, EA'nın emri hareket ettirmek için zamanı olmaz ve bu bir piyasa olur."
#property açıklaması "Sonra, sipariş takibi etkinleştirildi."
//------------------------------------------------ --------------------
extern int Stoploss = 10, //stoploss, 0 ise değişmez
kar al = 50; // kar al, 0 ise değişmez
extern int TrailingStop = 10; // trol uzunluğu, 0 ise trol yok
extern int İzleyenBaşlangıç = 0; // patikayı ne zaman açmalı, örneğin 40 n'ye ulaştıktan sonra
harici int StepTrall = 2; // trall step - stoploss'u StepTrall'den daha yakına taşıma
extern int Kaybı Yok = 0, //belirli sayıda kar puanı ile başabaşa transfer, eğer 0 ise başabaşa transfer olmaz
MinKarKayıpKayıp = 0; // başabaşa aktarırken minimum kar
harici int Büyü = 77; // büyü
harici intAdım = 10; //fiyattan uzaklık
harici çift Parti = 0.1;
extern int TimeModify = 30; // sırayı değiştirmenin yasak olduğu saniye sayısı
dış int kayma = 30; //Piyasa emirleri (alış veya satış emirleri) için izin verilen maksimum fiyat sapması.
//------------------------------------------------ --------------------
tarihsaat TimeBarB,TimeBarS;
//------------------------------------------------ --------------------
int başlangıç()
{
double STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);
double OSL=0,StLo=0,PriceB=0,PriceS=0,OOP=0,SL=0,TP=0;
int b=0,s=0,TicketB=0,TicketS=0,OT;
(int i=0; i<SiparişToplam(); i++) için
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()==Symbol() && Magic==OrderMagicNumber())
{
OT = SiparişTürü();
OSL = NormalizeDouble(OrderStopLoss(),Digits);
OOP = NormalizeDouble(OrderOpenPrice(), Rakamlar);
SL=OSL;
eğer (OT==OP_SATIN AL)
{
b++;
if (OSL<OOP && Kayıp Yok!=0)
{
StLo = NormalizeDouble(OOP+MinProfitNoLoss*Puan,Rakamlar);
if (StLo > OSL && StLo <= NormalizeDouble(Teklif - STOPLEVEL * Nokta,Rakamlar)) SL = StLo;
}
if (TrailingStop>=STOPLEVEL && TrailingStop!=0 && (Teklif - OOP)/Puan >= TrailingStart)
{
StLo = NormalizeDouble(Teklif - TrailingStop*Point,Digits);
if (StLo>=OOP && StLo > OSL+StepTrall*Point) SL = StLo;
}
eğer (SL>OSL)
{
if (!OrderModify(OrderTicket(),OOP,SL,TP,0,Beyaz)) Print("Error ",GetLastError()," Order Modify SL Satın Al ",OSL,"->",SL);
else Print("Sipariş Satın Al Modify SL ",OSL,"->",SL);
}
}
eğer (OT==OP_SAT)
{
s++;
if ((OSL>OOP || OSL==0) &&Kayıp Yok!=0)
{
StLo = NormalizeDouble(OOP-MinProfitNoLoss*Puan,Rakamlar);
if ((StLo < OSL || OSL==0) && StLo >= NormalizeDouble(Sor + STOPLEVEL * Nokta,Rakamlar)) SL = StLo;
}
if (TrailingStop>=STOPLEVEL && TrailingStop!=0 && (OOP - Sor)/Puan >= TrailingStart)
{
StLo = NormalizeDouble(Sor + TrailingStop*Point,Rakamlar);
if (StLo<=OOP && (StLo < OSL-StepTrall*Nokta || OSL==0)) SL = StLo;
}
if ((SL < OSL || OSL==0) && SL!=0)
{
if (!OrderModify(OrderTicket(),OOP,SL,TP,0,Beyaz)) Print("Hata ",GetLastError()," Order Modify Sell SL ",OSL,"->",SL);
else Print("Sipariş Sat Değiştir SL ",OSL,"->",SL);
}
}
if (OT==OP_BUYSTOP) {FiyatB=OOP; TicketB=OrderTicket();}
if (OT==OP_SELLSTOP) {PriceS=OOP; TicketS=OrderTicket();}
}
}
}
if (b+TicketB==0)
{
if (Stoploss>=STOPLEVEL && Stoploss!=0) SL = NormalizeDouble(Teklif - Stoploss * Nokta,Rakamlar); başkaSL=0;
if (Takeprofit>=STOPLEVEL && Takeprofit!=0) TP = NormalizeDouble(Ask + Takeprofit * Puan,Rakamlar); başkaTP=0;
if (OrderSend(Symbol(),OP_BUYSTOP,Lot,NormalizeDouble(Ask+Step * Point,Rakamlar),slippage,SL,TP,"news",Magic,0,CLR_NONE)!=-1) TimeBarB=TimeCurrent();
}
if (s+TicketS==0)
{
if (Stoploss>=STOPLEVEL && Stoploss!=0) SL = NormalizeDouble(Ask + Stoploss * Nokta,Rakamlar); başkaSL=0;
if (Takeprofit>=STOPLEVEL && Takeprofit!=0) TP = NormalizeDouble(Teklif - Kâr Al * Puan,Rakamlar); başkaTP=0;
if (OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Teklif - Adım * Nokta,Rakamlar),slippage,SL,TP,"news",Magic,0,CLR_NONE)!=-1) TimeBarS=TimeCurrent();
}
if (TicketB!=0)
{
if (TimeBarB<TimeCurrent()-TimeModify && MathAbs(NormalizeDouble(Sor + Adım * Nokta,Rakamlar)-FiyatB)/Nokta>StepTrall)
{
if (Stoploss>=STOPLEVEL && Stoploss!=0) SL = NormalizeDouble(Teklif - Stoploss * Nokta,Rakamlar); başkaSL=0;
if (Takeprofit>=STOPLEVEL && Takeprofit!=0) TP = NormalizeDouble(Ask + Takeprofit * Puan,Rakamlar); başkaTP=0;
if (OrderModify(TicketB,NormalizeDouble(Sor + Adım * Nokta,Rakamlar),SL,TP,0,CLR_NONE)) TimeBarB=TimeCurrent();
}
}
if (TicketS!=0)
{
if (TimeBarS<TimeCurrent()-TimeModify && MathAbs(NormalizeDouble(Teklif - Adım * Nokta,Rakamlar)-FiyatS)/Puan>StepTrall)
{
if (Stoploss>=STOPLEVEL && Stoploss!=0) SL = NormalizeDouble(Sor + Stoploss * Nokta,Rakamlar); başkaSL=0;
if (Takeprofit>=STOPLEVEL && Takeprofit!=0) TP = NormalizeDouble(Teklif - Kâr Al * Puan,Rakamlar); başkaTP=0;
if (OrderModify(TicketS,NormalizeDouble(Teklif - Adım * Nokta,Rakamlar),SL,TP,0,CLR_NONE)) TimeBarS=TimeCurrent();
}
}
dönüş(0);
}
//------------------------------------------------ --------------------

Dosyalar:
 
yaaarik777 :

Tünaydın.

Salı günü ilk çubuğun açılış fiyatını bulmama yardım et ve tüm hafta boyunca ondan hesaplamak için düzelt.

Teşekkür ederim.

if (DayOfWeek() == 1) Fiyat = iOpen(Symbol(), PERIOD_D1 , 4);
if (DayOfWeek() >= 2) Fiyat = iOpen(Symbol(), PERIOD_D1, DayOfWeek() - 2);

 

MetaTrader'da bir aksaklık gibi görünüyor: Bir prosedüre girmeye çalışırken takılma yaşayan var mı?

İşte bu kadar basit bir kod

geçersiz OnInit()

{

...

Yazdır ("dış prosedür");

StartBuy(Fiyat, Al, Durdur, Parti);

...

}

void StartBuy(çift Fiyat, çift Alım, çift Durdurma, çift Lot)

{

Print("İç prosedür");

....

}

bir satır Dış prosedür verir ve ardından test cihazı donar. Bu ne?

 
A13ksandr :

MetaTrader'da bir aksaklık gibi görünüyor: Bir prosedüre girmeye çalışırken takılma yaşayan var mı?

İşte basit bir kod

geçersiz OnInit()

{

...

Print("dış prosedür");

StartBuy(Fiyat, Al, Durdur, Parti);

...

}

İnternette ticaret yapmak için bir kenara koyun, bunun anlamı budur. Yürütmenin mümkün olan en hızlı şekilde tamamlanmasıyla İnternette minimum kod olması gerektiğini kaç kişi tekrarladı, yine de okumak için çok tembel olan biri olacak. Programın çalışması için standart önceden tanımlanmış işlevler de vardır.

Evet ve init tipi bir int, bir giriş değil, işi durdurma nedeninin dönüşü ile bu arada, bu şekilde kullanmanızı tavsiye ederim.

 
Scarick1 :

Merhaba, birisi bana buraya ne girmem gerektiğini söylerse minnettar olacağım, böylece danışman tetiklendikten sonra beklemede açılmayı durdurur.

//+------------------------------------------- --------------------+
//| Telif hakkı © 2014, Khlystov Vladimir |
//| http://cmillion.narod.ru |
//+------------------------------------------- --------------------+
#property telif hakkı "Telif hakkı © 2014, cmillion@narod.ru"
#özellik bağlantısı "http://cmillion.ru"
#mülkiyet katı
#property description "EA, piyasa dalgalanmalarına göre işlem yapar ve herhangi bir gösterge kullanmaz."
#property description "EA'nın fikri, stop emirlerinin mevcut fiyattan belirli bir mesafede ayrı ayrı hareket etmesidir."
#özellik açıklaması "Fiyat bir yönde yeterince keskin bir şekilde hareket ederse, EA'nın emri hareket ettirmek için zamanı olmaz ve bu bir piyasa olur."
#property açıklaması "Sonra, sipariş takibi etkinleştirildi."
//------------------------------------------------ --------------------
extern int Stoploss = 10, //stoploss, 0 ise değişmez
kar al = 50; // kar al, 0 ise değişmez
extern int TrailingStop = 10; // trol uzunluğu, 0 ise trol yok
extern int İzleyenBaşlangıç = 0; // patikayı ne zaman açmalı, örneğin 40 n'ye ulaştıktan sonra
harici int StepTrall = 2; // trall step - stoploss'u StepTrall'den daha yakına taşıma
extern int Kaybı Yok = 0, //belirli sayıda kar puanı ile başabaşa transfer, eğer 0 ise başabaşa transfer olmaz
MinKarKayıpKayıp = 0; // başabaşa aktarırken minimum kar
harici int Büyü = 77; // büyü
harici intAdım = 10; //fiyattan uzaklık
harici çift Parti = 0.1;
extern int TimeModify = 30; // sırayı değiştirmenin yasak olduğu saniye sayısı
dış int kayma = 30; //Piyasa emirleri (alış veya satış emirleri) için izin verilen maksimum fiyat sapması.
//------------------------------------------------ --------------------

tarihsaat TimeBarB,TimeBarS;

bool TradingAllowed = true;

//------------------------------------------------ --------------------
int başlangıç()
{
double STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);
double OSL=0,StLo=0,PriceB=0,PriceS=0,OOP=0,SL=0,TP=0;
int b=0,s=0,TicketB=0,TicketS=0,OT;
(int i=0; i<SiparişToplam(); i++) için
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()==Symbol() && Magic==OrderMagicNumber())
{
OT = SiparişTürü();
OSL = NormalizeDouble(OrderStopLoss(),Digits);
OOP = NormalizeDouble(OrderOpenPrice(), Rakamlar);
SL=OSL;
eğer (OT==OP_SATIN AL)

{

b++;

tradeAllowed=false;

if (OSL<OOP && Kayıp Yok!=0)
{
StLo = NormalizeDouble(OOP+MinProfitNoLoss*Puan,Rakamlar);
if (StLo > OSL && StLo <= NormalizeDouble(Teklif - STOPLEVEL * Nokta,Rakamlar)) SL = StLo;
}
if (TrailingStop>=STOPLEVEL && TrailingStop!=0 && (Teklif - OOP)/Puan >= TrailingStart)
{
StLo = NormalizeDouble(Teklif - TrailingStop*Point,Digits);
if (StLo>=OOP && StLo > OSL+StepTrall*Point) SL = StLo;
}
eğer (SL>OSL)
{
if (!OrderModify(OrderTicket(),OOP,SL,TP,0,Beyaz)) Print("Error ",GetLastError()," Order Modify SL Satın Al ",OSL,"->",SL);
else Print("Sipariş Satın Al Modify SL ",OSL,"->",SL);
}
}
eğer (OT==OP_SAT)
{

s++;

tradeAllowed=false;

if ((OSL>OOP || OSL==0) &&Kayıp Yok!=0)
{
StLo = NormalizeDouble(OOP-MinProfitNoLoss*Puan,Rakamlar);
if ((StLo < OSL || OSL==0) && StLo >= NormalizeDouble(Sor + STOPLEVEL * Nokta,Rakamlar)) SL = StLo;
}
if (TrailingStop>=STOPLEVEL && TrailingStop!=0 && (OOP - Sor)/Puan >= TrailingStart)
{
StLo = NormalizeDouble(Sor + TrailingStop*Point,Rakamlar);
if (StLo<=OOP && (StLo < OSL-StepTrall*Nokta || OSL==0)) SL = StLo;
}
if ((SL < OSL || OSL==0) && SL!=0)
{
if (!OrderModify(OrderTicket(),OOP,SL,TP,0,Beyaz)) Print("Hata ",GetLastError()," Order Modify Sell SL ",OSL,"->",SL);
else Print("Sipariş Sat Değiştir SL ",OSL,"->",SL);
}
}
if (OT==OP_BUYSTOP) {FiyatB=OOP; TicketB=OrderTicket();}
if (OT==OP_SELLSTOP) {PriceS=OOP; TicketS=OrderTicket();}
}
}

}

if (b == 0 && s == 0) TradingAllowed = true;

if (b+TicketB==0 && TradingAllowed )
{
if (Stoploss>=STOPLEVEL && Stoploss!=0) SL = NormalizeDouble(Teklif - Stoploss * Nokta,Rakamlar); başkaSL=0;
if (Takeprofit>=STOPLEVEL && Takeprofit!=0) TP = NormalizeDouble(Ask + Takeprofit * Puan,Rakamlar); başkaTP=0;
if (OrderSend(Symbol(),OP_BUYSTOP,Lot,NormalizeDouble(Ask+Step * Point,Rakamlar),slippage,SL,TP,"news",Magic,0,CLR_NONE)!=-1) TimeBarB=TimeCurrent();
}
if (s+TicketS==0 && TradingAllowed )
{
if (Stoploss>=STOPLEVEL && Stoploss!=0) SL = NormalizeDouble(Ask + Stoploss * Nokta,Rakamlar); başkaSL=0;
if (Takeprofit>=STOPLEVEL && Takeprofit!=0) TP = NormalizeDouble(Teklif - Kâr Al * Puan,Rakamlar); başkaTP=0;
if (OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Teklif - Adım * Nokta,Rakamlar),slippage,SL,TP,"news",Magic,0,CLR_NONE)!=-1) TimeBarS=TimeCurrent();
}
if (TicketB!=0)
{
if (TimeBarB<TimeCurrent()-TimeModify && MathAbs(NormalizeDouble(Sor + Adım * Nokta,Rakamlar)-FiyatB)/Nokta>StepTrall)
{
if (Stoploss>=STOPLEVEL && Stoploss!=0) SL = NormalizeDouble(Teklif - Stoploss * Nokta,Rakamlar); başkaSL=0;
if (Takeprofit>=STOPLEVEL && Takeprofit!=0) TP = NormalizeDouble(Ask + Takeprofit * Puan,Rakamlar); başkaTP=0;
if (OrderModify(TicketB,NormalizeDouble(Sor + Adım * Nokta,Rakamlar),SL,TP,0,CLR_NONE)) TimeBarB=TimeCurrent();
}
}
if (TicketS!=0)
{
if (TimeBarS<TimeCurrent()-TimeModify && MathAbs(NormalizeDouble(Teklif - Adım * Nokta,Rakamlar)-FiyatS)/Puan>StepTrall)
{
if (Stoploss>=STOPLEVEL && Stoploss!=0) SL = NormalizeDouble(Ask + Stoploss * Nokta,Rakamlar); başkaSL=0;
if (Takeprofit>=STOPLEVEL && Takeprofit!=0) TP = NormalizeDouble(Teklif - Kâr Al * Puan,Rakamlar); başkaTP=0;
if (OrderModify(TicketS,NormalizeDouble(Teklif - Adım * Nokta,Rakamlar),SL,TP,0,CLR_NONE)) TimeBarS=TimeCurrent();
}
}
dönüş(0);
}
//------------------------------------------------ --------------------

Nedense öyle...


 
evillive :

Отставить торговать в ините, вот что значит. Сколько уже повторяли что в ините должен быть минимум кода с максимально быстрым завершением исполнения, всё равно найдется кто-нибудь, кому лень читать. Есть же стандартные предопределенные функции для работы программы.

Да и инит типа инт, а не войд, с возвратом причины прекращения работы, между прочим, рекомендую так им и пользоваться. 

Afedersiniz! Tabii ki, void OnTick() içindeki her şey olur. açıklanan)
Neden: