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

 
Lütfen bir önceki gönderime bakın (sayfa 67). Bir hata bulamıyorum - bekleyen siparişler ayarlanmadı.
 
nemo811 :
Lütfen bir önceki gönderime bakın (sayfa 67). Bir hata bulamıyorum - bekleyen siparişler ayarlanmadı.

Hata yok. daha dikkatli olmak gerek

 #property copyright "Copyright © 2010, Хлыстов Владимир"
#property link "cmillion@narod.ru"
#property show_inputs
//--------------------------------------------------------------------
extern int stoploss = 0 ; //уровень выставления SL, если 0, то SL не выставляется
extern int takeprofit = 0 ; //уровень выставления TP, если 0, то TP не выставляется
extern int Magic = 123456 ; //уникальный номер ордера
extern bool BUY = false; //открыть ордер BUY
extern bool SELL = false; //открыть ордер SELL
extern bool BUYSTOP = false; //открыть ордер BUYSTOP
extern bool SELLSTOP = false; //открыть ордер SELLSTOP
extern double Lot = 0.1 ; //объем ордера
extern int slippage = 3 ; //Максимально допустимое отклонение цены для рыночных ордеров
//--------------------------------------------------------------------
double SL,TP;
//--------------------------------------------------------------------
int start()
{
if (BUY)
{
if (takeprofit!= 0 ) TP = NormalizeDouble (Ask + takeprofit* Point , Digits ); else TP= 0 ;
if (stoploss!= 0 ) SL = NormalizeDouble (Ask - stoploss* Point , Digits ); else SL= 0 ; 
OPENORDER ( "Buy" );
}
if (SELL)
{ 
if (takeprofit!= 0 ) TP = NormalizeDouble (Bid - takeprofit* Point , Digits ); else TP= 0 ;
if (stoploss!= 0 ) SL = NormalizeDouble (Bid + stoploss* Point , Digits ); else SL= 0 ; 
OPENORDER ( "Sell" );
}
if (BUYSTOP)
{
if (takeprofit!= 0 ) TP = NormalizeDouble (Ask + takeprofit* Point , Digits ); else TP= 0 ;
if (stoploss!= 0 ) SL = NormalizeDouble (Ask - stoploss* Point , Digits ); else SL= 0 ; 
OPENORDER ( "Buy Stop" );
}
if (SELLSTOP)
{ 
if (takeprofit!= 0 ) TP = NormalizeDouble (Bid - takeprofit* Point , Digits ); else TP= 0 ;
if (stoploss!= 0 ) SL = NormalizeDouble (Bid + stoploss* Point , Digits ); else SL= 0 ; 
OPENORDER ( "Sell Stop" );
}
return ( 0 );
}
//--------------------------------------------------------------------
void OPENORDER( string ord)
{
int error,err;
while (true)
{ error=true;
if (ord== "Buy" ) error= OrderSend ( Symbol (),OP_BUY, Lot, NormalizeDouble (Ask, Digits ),slippage,SL,TP, "BUY" ,Magic, 0 , Blue );
if (ord== "Sell" ) error= OrderSend ( Symbol (),OP_SELL,Lot, NormalizeDouble (Bid, Digits ),slippage,SL,TP, "SELL" ,Magic, 0 , Red );
if (ord== "BuyStop" ) error= OrderSend ( Symbol (),OP_BUYSTOP, Lot, NormalizeDouble (Ask, Digits ),SL,TP, "BUYSTOP" ,Magic, 0 , Blue );
if (ord== "SellStop" ) error= OrderSend ( Symbol (),OP_SELLSTOP,Lot, NormalizeDouble (Bid, Digits ),SL,TP, "SELLSTOP" ,Magic, 0 , Red );
if (error==- 1 ) //неудачная покупка OK
{ 
ShowERROR();
err++; Sleep ( 2000 );RefreshRates();
}
if (error || err > 10 ) return ;
}
return ;
} 
//--------------------------------------------------------------------
void ShowERROR()
{
int err= GetLastError ();
switch ( err )
{ 
case 1 : return ;
case 2 : Alert ( "Нет связи с торговым сервером " , Symbol ()); return ;
case 3 : Alert ( "Error неправильные параметры " , Symbol ()); return ;
case 130 : Alert ( "Error близкие стопы Ticket " , Symbol ()); return ;
case 134 : Alert ( "Недостаточно денег " , Symbol ()); return ;
case 146 : Alert ( "Error Подсистема торговли занята " , Symbol ()); return ;
case 129 : Alert ( "Error Неправильная цена " , Symbol ()); return ;
case 131 : Alert ( "Error Неправильный объем " , Symbol ()); return ;
case 4200 : Alert ( "Error Объект уже существует " , Symbol ()); return ;
default : Alert ( "Error " ,err, " " , Symbol ()); return ;
}
}
//--------------------------------------------------------------------
 
gince :

Hata yok. daha dikkatli olmak gerek


Hayır hayır hayır. Gönderiyi görmedin. Bir diğerinin hemen altında :)). Test ettiğiniz sürüm, bekleyenin ayarlanması gereken mevcut fiyattan (sadece mevcut fiyattan) seviyeyi belirtmiyor. Cevap verdiğiniz için teşekkürler.
 
nemo811 :

Hayır hayır hayır. Gönderiyi görmedin. Bir diğerinin hemen altında :)). Test ettiğiniz sürüm, bekleyenin ayarlanması gereken mevcut fiyattan (sadece mevcut fiyattan) seviyeyi belirtmiyor. Cevap verdiğiniz için teşekkürler.

OPENORDER() işlev çağrısıyla veya işlevin kendisiyle ilgili bir şey.

Bu nasıl çalışır

eğer (SATIN AL DURDUR)

{

if (kar al!=0) TP = NormalizeDouble(Sor + kar al*Puan,Rakamlar); başkaTP=0;

if (stoploss!=0) SL = NormalizeDouble(Sor - stoploss*Nokta,Rakamlar); başkaSL=0;

int error=OrderSend(Symbol(),OP_BUYSTOP, Lot,NormalizeDouble(Ask + DistanceSet*Point,Rakamlar),slippage,SL,TP,"",Magic,0);

}

 
gince :

OPENORDER() işlev çağrısıyla veya işlevin kendisiyle ilgili bir şey.

Bu nasıl çalışır

eğer (SATIN AL DURDUR)

{

if (kar al!=0) TP = NormalizeDouble(Sor + kar al*Puan,Rakamlar); başkaTP=0;

if (stoploss!=0) SL = NormalizeDouble(Sor - stoploss*Nokta,Rakamlar); başkaSL=0;

int error=OrderSend(Symbol(),OP_BUYSTOP, Lot,NormalizeDouble(Ask + DistanceSet*Point,Rakamlar),slippage,SL,TP,"",Magic,0);

}


A-ah-ah-ah-ah!!! Bilgisayar tanrıları!!! Daha önce on kez üzerinden geçtim! Neden çalışmıyor? Ana pazar açılır. Ertelenmiş kesinlikle aynı prensipte yazılmıştır. Ne eksiği var? :)))))))
 

Bana öğreticide açıklanan Uzman Danışmana TrailingStopFrCnSAR_v2'yi nasıl ekleyeceğimi söyle?

ve başka bir danışman bekleyen bir sipariş verdiğinde veya bir sipariş açtığında çalışması için sipariş takibini nasıl devre dışı bırakabilirim?

Dosyalar:
 

Urrrrrrrra!!!!!!!! Bir hata bulundu!

Herhangi biri ilgileniyorsa, işte çalışan sürüm:

#özellik telif hakkı "Telif hakkı © 2010, Vladimir Khlystov"
#p

iprty bağlantısı "cmillion@narod.ru"
#özellik show_inputs
//------------------------------------------------ --------------------
harici int stoploss = 0; // SL ayar seviyesi, 0 ise SL ayarlanmamıştır
harici int kar al = 0; //TP ayar seviyesi, 0 ise TP ayarlanmamıştır
harici int Sihir = 123456; //benzersiz sipariş numarası
extern bool SATIN AL = yanlış; // bir SATIN AL emri aç
extern bool SATIŞ = yanlış; // SATIŞ emrini aç
extern bool BUYSTOP = yanlış; //BUYSTOP emrini aç
extern bool SELLSTOP = yanlış; // SELLSTOP emrini aç
harici çift Parti = 0.1; // sipariş hacmi
dış int kayma = 3; //Piyasa emirleri için izin verilen maksimum fiyat sapması
dış int Uzaklık Kümesi = 20; // Pazardan uzaklık
//------------------------------------------------ --------------------
çift SL,TP;
//------------------------------------------------ --------------------
int başlangıç()
{
eğer (SATIN AL)
{
if (kar al!=0) TP = NormalizeDouble(Sor + kar al*Puan,Rakamlar); başkaTP=0;
if (stoploss!=0) SL = NormalizeDouble(Sor - stoploss*Nokta,Rakamlar); başkaSL=0;
OPENORDER("satın al");
}
eğer (SAT)
{
if (kar al!=0) TP = NormalizeDouble(Teklif - kar al*Puan,Rakamlar); başkaTP=0;
if (stoploss!=0) SL = NormalizeDouble(Teklif + stoploss*Puan,Rakamlar); başkaSL=0;
OPENORDER("Sat");
}
eğer (SATIN AL DURDUR)
{
if (kar al!=0) TP = NormalizeDouble(Sor + kar al*Puan,Rakamlar); başkaTP=0;
if (stoploss!=0) SL = NormalizeDouble(Sor - stoploss*Nokta,Rakamlar); başkaSL=0;
OPENORDER("Satın Al Durdur");
}
eğer (SATIŞ DURDUR)
{
if (kar al!=0) TP = NormalizeDouble(Teklif - kar al*Puan,Rakamlar); başkaTP=0;
if (stoploss!=0) SL = NormalizeDouble(Teklif + stoploss*Puan,Rakamlar); başkaSL=0;
OPENORDER("Satış Durdur");
}
dönüş(0);
}
//------------------------------------------------ --------------------
void OPENORDER(dize sırası)
{
int hata, hata;
süre (doğru)
{ hata=doğru;
if (ord=="Buy" ) error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,"",Magic,0);
if (ord=="Sat") error=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,SL,TP,"",Magic,0);
if (ord=="Buy Stop") error=OrderSend(Symbol(),OP_BUYSTOP, Lot,NormalizeDouble(Ask + DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
if (ord=="Sell Stop") error=OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Bid - DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
if (hata==-1) //başarısız deneme
{
GösterERROR();
err++;Sleep(2000);RefreshRates();
}
if (hata || hata >10) döner;
}
dönüş;
}
//------------------------------------------------ --------------------
geçersiz ShowERROR()
{
int err=GetLastError();
geçiş(hata)
{
durum 1: dönüş;
durum 2: Alert("Ticaret sunucusuyla bağlantı yok ",Symbol());dönüş;
durum 3: Alert("Hata geçersiz parametreler ",Symbol());dönüş;
durum 130: Alert("Bilet durakları kapatılırken hata oluştu",Symbol());dönüş;
durum 134: Alert("Yeterli para yok",Symbol()); dönüş;
durum 146: Alert("Hata Ticaret alt sistemi meşgul",Symbol());dönüş;
durum 129: Alert("Hata Yanlış fiyat",Symbol()); dönüş;
durum 131: Alert("Hata Yanlış hacim ",Symbol());dönüş;
case 4200:Alert("Hata Nesnesi zaten var",Symbol());dönüş;
varsayılan: Alert("Hata",hata," ",Symbol());dönüş;
}
}
//------------------------------------------------ --------------------

Tartışmaya katılan herkese çok teşekkürler! Sensiz hiçbir yerde! :)))))

 
nemo811 :

Urrrrrrrrr!!!!!!!! Bir hata bulundu!


Tartışmaya katılan herkese çok teşekkürler! Sensiz hiçbir yerde! :)))))

hala kodunuzda bir hata var.

unutmayın: beklemedeki duruşlar ve alımlar mevcut fiyattan değil, emir açılış fiyatından sayılır.

 

YARDIM! Söyleyin bana, lütfen, pozisyonun bir kısmını kapatırsanız (örneğin, 1 lotluk bir sipariş ve 0,5 lotluk bir kapanış), OrderClose bileti değiştirmeli mi? Test cihazına değiştiğini yazıyorum ... Bunu nasıl önleyebilirim? Aşağıda bir kapanış kodu pasajı var ...

1 2011.01.31 06:57 sat 1 2.55 1.36177 0.00000 0.00000 0.00 10000.00
2 2011.01.31 08:10 kapat 1 0.51 1.36039 0.00000 0.00000 70.38 10070.38
3 2011.01.31 08:10 sat 2 2.04 1.36177 0.00000 0.00000 0.00 10070.38
4 2011.01.31 08:10 kapat 2 0.40 1.36038 0.00000 0.00000 55.60 10125.98
5 2011.01.31 08:10 sat 3 1.64 1.36177 0.00000 0.00000 0.00 10125.98

Başka bir soru: Sıralamayı 4 parçaya bölmem ve Cls_S==true tetiklendiğinde her parçayı kapatmam gerekiyor. Sayacı kullanmaya çalıştım ... Çalışmıyor ..

Biri bana fikir verebilir mi???

Şimdiden teşekkürler!!!!

if (Tip==1 && ((Cls_S0==true&&TotClS==0)||(Cls_S1==true&&TotClS==1)
||(Cls_S2==true&&TotClS==2)||(Cls_S3==true&&TotClS==3))) // Satış emri açıldı..
{ // ve BT'yi kapatmak için bir kriter var
Alert("0,2 Lot Satış Kapatmaya Çalışılıyor ",Ticket,". Cevap bekleniyor..");
Yeniler(); // Veriyi güncelle
Ans=SiparişKapat(Bilet,LotСt,Sor,5);

if (Ans==true) // Anladım :)
{
TotClS++;
Alert("Kapalı 0.2 Parti Satış",Bilet);
kırmak; // Kapatma döngüsünden çık
}
if (Fun_Error( GetLastError() )==1) // Hata İşleme
devam etmek; // Yeniden dene
dönüş; // başlangıçtan çık()
}
kırmak; // iken çık

 
gince :
Bayrak [] arabelleğinin geçici olarak oluşturulmasını sağladı - boş, neden? Hatam nerede?
Ama bilmiyorum. Sergeev biliyor, doğru göründüğünü söyledi. Ayrıca nasıl doğru yazılacağını da görmek isterim.
En azından bir şey göstermek için biraz değiştirdim.
- göstergeyi ayrı bir pencereye taşıdı, ardından geri getirebilirsiniz

- macd[] dizisi havada asılı kaldı, gösterge yaptı, doğruluğu artırıldı
- karmaşık durumunuzu açmak için ayırın, ayarlama için basit bir tane ayarlayın
- bayrağın durumunu değiştirdi, bu yüzden bir şekilde çalışıyor

Sonra yavaş yavaş koşullara girebilirsiniz, sövenin nerede olduğunu hemen göreceksiniz.

Dosyalar:
Neden: