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

 

Her şey buradaydı C:\Users\======\AppData\Local\VirtualStore\Program Files\====== - MetaTrader\

manzara

 

Lütfen bana söyle.

Basit bir senaryo yazdım (el ile karışıklık yaratmamak için, haber bülteninden önce grafiğe atmak için piyasaya her iki yöne yakın iki bekleyen emir yüklemek), çok daha kolay görünebilir, ancak işe yaramıyor , herhangi bir sipariş açmaz ve günlükte sadece betiğin şöyle ve böyle başarıyla yüklendiğini ve ardından hemen aynı saniyede kaldırıldığını yazar! Hatasız derler. Onu bir uzman formuna dönüştürdüm, yani. test cihazını kontrol etmek için init ve deinit eklendi, işe yaradı. Ama anladığınız gibi, bir uzmana değil, bir senaryoya ihtiyacım var.

Burada sorun ne? Şimdiden teşekkürler.

İşte komut dosyası kodu:

# mülkiyet telif hakkı "alexey15"
#özellik bağlantısı ""
#özellik gösterisi_onayla

harici int SL = 15;
harici int TP = 90;
harici int DELTA = 15;
harici çift LOT = 0.1;
harici int SLIP = 3;

//+------------------------------------------- --------------------+
//| komut dosyası programı başlatma işlevi |
//+------------------------------------------- --------------------+
int başlangıç()
{
//----
double BUYPRICE = Sor + DELTA*Puan;
double SELLPRICE = Teklif - DELTA*Puan;
int OPEN_ORDER;

OPEN_ORDER=SiparişGönder(Symbol(),OP_BUYSTOP,LOT,BUYPRICE,SLIP,BUYPRICE-SL*Puan,BUYPRICE+TP*Puan,NULL,0,0,Mavi);
OPEN_ORDER=OrderSend(Symbol(),OP_SELLSTOP,LOT,SELLPRICE,SLIP,SELLPRICE+SL*Puan,SELLPRICE-TP*Puan,NULL,0,0,Kırmızı);


//----
dönüş(0);
}
//+------------------------------------------- --------------------+

 
wiwkin52 :

Merhaba. Bana yardım et lütfen. Tüm göstergelerle birlikte mt'yi kaldırdım, her şey tamamen. Şimdi kuruldu ve orada her şey olduğu gibi ve kaldı. Nasıl olunur? Belki başka bir yerde göstergelerin kopyaları ve diğer her şey saklanır?

Program Dosyalarından MT klasörünü yeni mi kaldırdınız yoksa sildiniz mi?
 
alexey15 :

Lütfen bana söyle.

Basit bir senaryo yazdım (el ile karışıklık yaratmamak için, haber bülteninden önce grafiğe atmak için piyasaya her iki yöne yakın iki bekleyen emir yüklemek), çok daha kolay görünebilir, ancak işe yaramıyor , herhangi bir sipariş açmaz ve günlükte sadece betiğin şöyle ve böyle başarıyla yüklendiğini ve ardından hemen aynı saniyede kaldırıldığını yazar! Hatasız derler. Onu bir uzman formuna dönüştürdüm, yani. test cihazını kontrol etmek için init ve deinit eklendi, işe yaradı. Ama anladığınız gibi, bir uzmana değil, bir senaryoya ihtiyacım var.

Burada sorun ne? Şimdiden teşekkürler.

İşte komut dosyası kodu:


Kontrol. Senaryonuz çalışıyor.

Her ihtimale karşı, hata baskısını yazdırın:

int start()
{
//----
double BUYPRICE = Ask + DELTA* Point ;
double SELLPRICE = Bid - DELTA* Point ;
int TicketBS,TicketSS;
TicketBS= OrderSend ( Symbol (),OP_BUYSTOP,LOT,BUYPRICE,SLIP,BUYPRICE-SL* Point ,BUYPRICE+TP* Point , NULL , 0 , 0 , Blue );
TicketSS= OrderSend ( Symbol (),OP_SELLSTOP,LOT,SELLPRICE,SLIP,SELLPRICE+SL* Point ,SELLPRICE-TP* Point , NULL , 0 , 0 , Red );
 if (TicketBS<= 0 || TicketSS<= 0 ) Print ( "Error = " , GetLastError ());
//----
return ( 0 );
}

 
alexey15 :

Lütfen bana söyle.

Aldım ve basit bir senaryo yazdım (el ile karışıklık yaratmamak için haberlerin yayınlanmasından önce grafiğe atmak için piyasaya her iki yönde de bekleyen iki emir yüklemek), çok daha kolay görünüyordu, ancak çalışmıyor, herhangi bir sipariş açmıyor ve günlükte sadece komut dosyasının şu veya bu şekilde başarıyla yüklendiğini ve ardından hemen aynı anda kaldırıldığını yazıyor! Hatasız derler. Onu bir uzman formuna dönüştürdüm, yani. test cihazını kontrol etmek için init ve deinit eklendi, işe yaradı. Ama anladığınız gibi, bir uzmana değil, bir senaryoya ihtiyacım var.

Burada sorun ne? Şimdiden teşekkürler.

4 hanede çalışır. Beş işarette kontrol etmedim, ancak StopLevel seviyesinde kısıtlamalar için bir kontrol ekledim:

 //+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
extern int SL     = 15 ;
extern int TP     = 90 ;
extern int DELTA  = 15 ;
extern double LOT = 0.1 ;
extern int SLIP   = 3 ;

//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start()
{
//----
int StopLevel = MarketInfo( Symbol (),MODE_STOPLEVEL);
if (DELTA <= StopLevel) DELTA = StopLevel+ 1 ;

double BUYPRICE = Ask + DELTA* Point ;
double SELLPRICE = Bid - DELTA* Point ;
int OPEN_ORDER;

OPEN_ORDER= OrderSend ( Symbol (),OP_BUYSTOP,LOT,BUYPRICE,SLIP,BUYPRICE-SL* Point ,BUYPRICE+TP* Point , NULL , 0 , 0 , Blue );
OPEN_ORDER= OrderSend ( Symbol (),OP_SELLSTOP,LOT,SELLPRICE,SLIP,SELLPRICE+SL* Point ,SELLPRICE-TP* Point , NULL , 0 , 0 , Red );

//----
return ( 0 );
}
//+------------------------------------------------------------------+
Prensip olarak, hatalardan kaçınmak için dört veya beş basamak için bir Nokta ayarı yapabilirsiniz. Delta seviyesi beş hanede on kat daha yüksek olması gerektiğinden, yani. 15 değil, 150 ve sırasıyla almalarla durur ...

Sonra şöyle görünecek:

 //+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
extern int SL     = 15 ;
extern int TP     = 90 ;
extern int DELTA  = 15 ;
extern double LOT = 0.1 ;
extern int SLIP   = 3 ;

//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start()
{
//----
double PointX;

if ( Digits == 5 || Digits == 3 ) PointX = Point * 10 ;     // Корректировка Point под трёх- пятизнак
if ( Digits == 4 || Digits == 2 ) PointX = Point ;

int StopLevel = MarketInfo( Symbol (),MODE_STOPLEVEL);
if (DELTA <= StopLevel) DELTA = StopLevel+ 1 ;

double BUYPRICE = Ask + DELTA*PointX;
double SELLPRICE = Bid - DELTA*PointX;
int OPEN_ORDER;

OPEN_ORDER= OrderSend ( Symbol (),OP_BUYSTOP,LOT,BUYPRICE,SLIP,BUYPRICE-SL*PointX,BUYPRICE+TP*PointX, NULL , 0 , 0 , Blue );
OPEN_ORDER= OrderSend ( Symbol (),OP_SELLSTOP,LOT,SELLPRICE,SLIP,SELLPRICE+SL*PointX,SELLPRICE-TP*PointX, NULL , 0 , 0 , Red );

//----
return ( 0 );
}
//+------------------------------------------------------------------+
 

Günaydın !

Dizinlerdeki kimse sormayacak ...?

 
volshebnik :

Günaydın !

Dizinlerdeki kimse sormayacak ...?

Bu doğru, indeksler.
 
splxgf :
Bu doğru, indeksler.
Komik değil) Soru buradaydı - https://www.mql5.com/ru/forum/131277/page87 Ama forum yöneticileri soru tekrarını önermediği için tekrar yazmadım.
 
volshebnik :

Merhaba !

Söyle bana, lütfen, sorun ne? Danışmanı GBPUSD test cihazına koydum - her şey beklendiği gibi fırsatlar açar. DXH1 dolar endeksine koydum - pek fazla fırsat açmıyor: "130" hatası - Yanlış duruşlar. Dahası, neyin yanlış olduğu net değil - benzer durumlarda açılıyor, sonra açılmıyor, ama daha çok açmıyor. Dolar endeksi -100 ve 200 için spread ve stop seviyesi. GBPUSD -3 ve 4. için spread ve stop seviyesi. Dolar endeksindeki fiyatlar, örneğin 78.150, bir çiftte - 4 ondalık basamak. Ama önemli

İşte kodun bir parçası:


hazırlıksız:

1) SL ve TP normalleştirilmemiştir;

2) OrderSend'de normalizasyon için Digits kullanılırken Symb ile sipariş verilir.

Şu şekilde deneyin:

 int opDigits=MarketInfo(Symb,MODE_DIGITS);
SL = NormalizeDouble (SL,opDigits);
TP = NormalizeDouble (TP,opDigits);
ОткрФрвверх = NormalizeDouble (ОткрФрвверх,opDigits);
ticketup= OrderSend (Symb, OP_BUYSTOP, Lot, ОткрФрвверх, 0 , SL, TP, NULL ,A, 0 ,вверх); // Ордер вверх
 
PapaYozh :


hazırlıksız:

1) SL ve TP normalleştirilmemiştir;

2) OrderSend'de normalleştirme sırasında Digits kullanılırken Symb ile sipariş verilir.

Şu şekilde deneyin:

Çok teşekkürler ! Nadiren de olsa çalıştı, bazen aynı hata hala kayar - 130 ....... (Her zaman stopları normalleştirmeniz mi yoksa sadece endekslerde mi? (Sanırım, stoplar her zaman normalizasyon olmadan döviz çiftlerinde işe yaradı).