[ARŞİV!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 4. - sayfa 281

 
drknn :
Ve aniden orada 60 için değil, 70 dolar için bir kodu olacak mı? :) ;)
yükseltelim :)
 
veti-k :
Hey! Artı puanlarda bir oklava sırasını nasıl belirleyeceğimi söyle?
Bir alış pozisyonu açılırsa, pozisyon açılış fiyatı mevcut Alış fiyatından çıkarılmalıdır. Pozisyon satılıksa, mevcut Satış fiyatını açılış fiyatından çıkarın.
 
paladin80 :
Bir alış pozisyonu açılırsa, pozisyon açılış fiyatı mevcut Alış fiyatından çıkarılmalıdır. Pozisyon satılıksa, mevcut Satış fiyatını açılış fiyatından çıkarın.

İzciler Bid veya Ask yerine OrderClosePrice() kullanabileceğinizi bildirdi
 
Deneyeceğim teşekkürler))
 
Sevgili forum kullanıcıları, bir değişkeni iCustom'dan ArrayMaximum'a nasıl aktaracağımı söyler misiniz?
 
Alexandr24 :
Sevgili forum kullanıcıları, bir değişkeni iCustom'dan ArrayMaximum'a nasıl aktaracağımı söyler misiniz?
Bunu yapmak için ArrayMaximum'un ne olduğunu okumanız gerekir.

int ArrayMaximum(çift dizi[], int sayı=BÜTÜN_ARRAY, int başlangıç=0)

Maksimum değere sahip öğeyi arayın. İşlev, dizideki maksimum öğenin konumunu döndürür.

Arama bir değişken değil, bir süreçtir. Yani, bir dizi öğesine bir gösterge değeri atayabilir ve ardından ArrayMaximum'u kullanarak dizide en büyük öğeyi arayabilirsiniz.
 
granit77 :
Bunu yapmak için ArrayMaximum'un ne olduğunu okumanız gerekir.

int ArrayMaximum(çift dizi[], int sayı=BÜTÜN_ARRAY, int başlangıç=0)

Maksimum değere sahip öğeyi arayın. İşlev, dizideki maksimum öğenin konumunu döndürür.

Arama bir süreçtir, bir değişken değil. Yani, bir dizi öğesine bir gösterge değeri atayabilir ve ardından ArrayMaximum'u kullanarak dizide en büyük öğeyi arayabilirsiniz.
Dün için göstergenin maksimum değerini nasıl bulacağımı söyleyebilir misiniz? Dün için göstergenin ilk ve uç değerlerini buldum ama dünün maksimum değerini bulamıyorum, ArrayMaximum tüm grafiği aramaya başlıyor veya belki başka bir fonksiyon aracılığıyla yapılıyor?
 

Herkese iyi günler, bilgisayarın önünde oturuyorum ve kafamı klavyeye vuruyorum - koddaki bir hatayı düzeltemiyorum ... lütfen yeni başlayanlara yardım edin.

İşte benim baykuş kodum:

harici çift Kar Al = 500;

harici çift Lot = 0.1;

harici çift Stoploss = 30;

harici çift sondaki durdurma = 30;

harici dize Gösterge_1 = "SAR (SAR_STEP)";

harici çift SAR_Adım =0.02;

harici çift SAR_MaxStep =0.2;

harici çift GeneralShift = 0; // 0 - kapatılmamış çubuk, 1 - kapalı.

// Bunlar olacak değişkenlerdir.

// sırasında görüntülenir

// uzmanın çizelge ile bağlantıları


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

//| |

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

int başlangıç()

{

çift a;

intb;

int toplam, bilet, cnt;


// Programda kullanılacak değişkenler


if(çubuklar<100)

{

Print("100'den küçük barlar");

dönüş(0);

}

// Bu koşul, grafik geçmişinde 100'den fazla mum çubuğu olup olmadığını kontrol eder ve yoksa,

// hata mesajı verir. Dikkatinizi soruna çekmek için gerekli

// bilgi eksikliği


if(Kâr Al<5)

{

Print("Kar Al 5'ten az");

dönüş(0);

}

// Bu koşul, Kâr Al seviyesini kontrol eder (dış değişkenlerden birinin,

// kar alma seviyesini kontrol eder. olup olmadığını kontrol etmek için gerekli

// DC'niz için izin verilmeyen bir kar alma seviyeleri ayarladınız mı

// seviye. Sadece danışman çalışmazsa, açıkça bilmeniz için gereklidir.

// burada yanlış olan ne? koymanızı şiddetle tavsiye ederim.


toplam=SiparişToplam();

if(toplam<1)

// Aynı anda birkaç aynı pozisyonu açmamak için bu kontrol gereklidir. Mevcut değilse, diyelim ki, Uzman Danışmanınız stokastik aşırı alım bölgesindeyken tetiklenirse, tüm marjı kullanana kadar her kene için bir anlaşma yapacaktır.

// Bu nedenle, açılan pozisyon sayısını sınırlamak için şunu koyun

// sınırlayıcı. Eğer öyleyse, danışman belirli bir süreden daha fazlasını açmayacaktır.

// pozisyon sayısı <x

{

// açık sipariş tanımlanmadı

if(AccountFreeMargin()<(1000*Lots));

{

Print("Paramız yok. Serbest Marj = ", AccountFreeMargin());

dönüş(0);

}

// Başka bir yardımcı kod parçası. Hesapta yeterli bakiye yoksa,

// hata verecektir. Danışman çalışıyorsa bu parça tamamen işe yaramaz

// gerçek zamanlı, ancak geriye dönük test için çok kullanışlı.


if(iSAR(NULL,0,SAR_Step,SAR_MaxStep,GeneralShift)>Kapat[0]); // BUY'ı aç

// Sonunda en ilginç kısma geldik. Bu X'ler yerine, eklemeniz gerekir

// satın almanın gerçekleştiği koşul.


{

bilet=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-Stoploss*Point, Ask+TakeProfit*Puan,"yorum",16384,0,Yeşil);


// Satın alma koşulları bunlardır. Prensip olarak, burada hiçbir şeyin değiştirilmesi gerekmez, ancak genişletmek

// görünüm, burada yazılanları deşifre edeceğim. Burada ne satın alınacağı yazıyor

// (OP_BUY) mevcut sembol (EA'nın bağlı olduğu para birimi çifti),

// anlaşma boyutu Lotlar (başlangıçta bir değişken kümesi). Market fiyatları

// kayma 3 ve zararı durdur ve karı al olarak ayarlanmış

// başlangıçta, anlaşma bir "yorum" yorumuyla olacak, tanımlayıcı numarası 0 olacak ve

// satın alınan yer, grafikte tanımlayıcı kodlu yeşil bir ok olacak

// 16384


if(bilet>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SATIN AL emri açıldı : ",OrderOpenPrice());

}

else Print("SATIN AL emri açılırken hata oluştu : ",GetLastError());

dönüş(0);

}


// Bu blok sadece her şeyin yolunda gidip gitmediğini günlüğe kaydetmek için gereklidir.

// Veya, aksi takdirde, bir şeyin başarısız olmasına neden olan hatayı günlüğe kaydedin.


// Şimdi satış oranı için de aynısını yapın. YYYYYYYY - koşullar yerine

if(iSAR(NULL,0,SAR_Step,SAR_MaxStep,GeneralShift)<Kapat[0])

{

bilet=SiparişGönder(Symbol(),OP_SELL,Lots,Bid,3,Bid+Stoploss*Point,Bid-TakeProfit*Point,"macd sample",16384,0,Kırmızı);

if(bilet>0)

{

if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES)) Print(" SAT emri açıldı : ",OrderOpenPrice());

}

else Print("SATIŞ emrini açarken hata: ",GetLastError());

dönüş(0);

}

dönüş(0);

}


// Şimdi çıkış için. Burada da hiçbir şey değişmedi, sadece RRRRRRR - koşul

// SATIN AL, ZZZZZZZZ ile bir anlaşmayı kapat - SELL ile


for(cnt=0;cnt

//for'a yardımıyla tüm açık pozisyonlar sıralanır

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && // açık pozisyonu kontrol edin

OrderSymbol()==Symbol()) // sembolü kontrol edin

{

if(OrderType()==OP_BUY) // uzun pozisyon açıldı

{

// kapatılmalı mı?

if(iSAR(NULL,0,SAR_Step,SAR_MaxStep,GeneralShift)<Kapat[0]) // SATIN AL'ı kapat.

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // konumu kapat

dönüş(0); // çıkış

}

// takip eden durdurmayı kontrol et

if(TrailingStop>0)

{

if(Bid-OrderOpenPrice()>Point*TrailingStop)

{

if(OrderStopLoss()<Teklif Noktası*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

dönüş(0);

}

}

}

}

else // Kısa pozisyonla aynı

{

// kapatılmalı mı?

if(iSAR(NULL,0,SAR_Step,SAR_MaxStep,GeneralShift)>Kapat[0])//kapat SAT

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // konumu kapat

dönüş(0); // çıkış

}

// takip eden durdurmayı kontrol et

if(TrailingStop>0)

{

if((OrderOpenPrice()-Ask)>(Nokta*TrailingStop))

{

if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);

dönüş(0);

}

}

}

}

}

}

}

dönüş(0);

//--------

}

//-------- son.

 

Acemi bir autotrader bir hatayı yakalamaz!!! LÜTFEN HERKESE YARDIMCI OLSUN!!!!!!!!!!!!!!!!!!!!

'}' - dengesiz parantezler C:\Program Files (x86)\Forex4you MetaTrader 4\experts\Sarantos V101.mq4 (167, 1)

 
Bir diğeri , kodun bu şekilde biçimlendirilmesiyle kafanızı karıştırmamak olacaktır. düzelteyim :)
Neden: