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

 
EVladMih :

Artemis, ikinci gönderiden kişiye beyazla sıcağı birleştirdiğini açıklamaya başladın ve açıkladığın tek şey, sorunun kimsenin sana sormadığı kısmıydı. Yanlışlıkla bu kişinin ne kadar kod yazdığını biliyorum ve SEN özüne inmedin, ona değil. Bu arada bu kodu kendisi için değil, insanlar için yazıyor.

Bu nedenle, istemiyorsanız veya nüfuz edemez ve yardım edemezseniz, en azından müdahale etmeyin ve günahlarınız için başkalarını suçlamayın.

Daha ciddi anlayan çocuklar - yardım edin, lütfen, satorifx. Gerçekten beyazı sıcakla birleştirmesi gerekiyor, ama bu onun hatası değil... Aynı operadan şarkıların farklı sahnelerde (farklı koordinat sistemleri) söylendiği MT4'ün özelliklerini kendiniz biliyorsunuz.

Her şeyden önce. Seninle "sen"e geçmedim. İkincisi, isimle okuyamayacağınız için en azından bir kişinin takma adını doğru bir şekilde nasıl okuyacağınızı öğrenin. Üçüncü olarak trend çizgisi ile kesişim noktasının nasıl belirleneceği konusunda bir ipucu vereceğim. Yeni başlayanlar için özel olarak yazılmış örnekte, trend çizgisinin kendisi hesaplamalar için kullanılmamaktadır. Bu sadece hangi yöne hareket edileceğine dair bir ipucu. Bu sorunu çözme yöntemleri çok ve küçük bir araba olmasına rağmen. Uyumsuz koordinatlar sorununa takılmanıza gerek yok, ancak mevcut girdi verileriyle durumdan nasıl çıkacağınıza karar vermeniz gerekiyor.

Ve... bu... Henüz hayal etmediğiniz şeyleri yazabilirim...

 

EVladMih : ,

ama galiba insanları hamamlı/yerli olmayan diye ayırmamak lazım.

Bu, belirli bir kişinin "yerelliği/yersizliği" ile ilgili değil. Kişinin soruyu nasıl sorduğuyla ilgilidir. Sorusunun özünü doğru anlamakta yanılmışsam, bu ona bana kaba olma hakkı vermez. Dürüstçe ona yardım etmeye çalıştım. Ve sanırım, benim cevabımdan sonra, istediği ve istediği şeyin bu olmadığını söyleseydi ve kendisine verilen özel görevi açıklasaydı, her şeyi hızlı ve verimli bir şekilde nasıl yapacağımızı bulurduk.

Şimdi trend çizgisi ile kesişimi belirleyemediğinden bahsediyorsunuz. Ama bu sadece beni gülümsetiyor. Yoksa yine her şeyi doğru anlamıyor muyum ve başka bir kabalığa layık mıyım? En basit işlev olan ObjectGetValueByShift() belirli bir çubuktaki trend çizgisinin fiyatını döndürür. Bu yüzden bir fiyatı diğeriyle karşılaştırın.

 
artmedia70 :
Anladığım kadarıyla, nesnenin yatay olarak hareket etmemesine, ekranda görünen çubukların en düşük fiyatına dikey olarak konumlandırılmasına ihtiyacı var. Ona sorusunun ilk bölümünü gösterdim - çizelgedeki minimum fiyatın nasıl bulunacağı. Beni anlamadı ve havladı. Şimdi iki koordinat sistemini geçmeden ihtiyacı olanı nasıl yapacağını aramasına izin verin. Ve çok basit. Belki başkası onun için yapar, ama ben izin alıyorum. Boorları ve beleşçileri sevmiyorum - özüne girme ve en azından kodun içine bir şeyler yazma zahmetine bile girmedi.

artmedia70, ben kavgacı olmayan bir insanım ve yanlış bir şeyi ağzımdan kaçırdıysam özür dilerim ve bunu kabalık olarak görmemenizi rica ederim.

Sorunu nasıl çözeceğimi gerçekten bilmiyorum.

Şimdiye kadar 2 koordinat sistemini basit bir şekilde geçtim: Bir etiket yaptım ve onu minimum fiyata manuel olarak yerleştirdim - bu şekilde etiketin Y koordinatına sahibim ve WindowPriceMin() ile aldığım minimum fiyata tekabül ediyor işlev. Ancak bu manuel, ancak programlı olarak izlemek ve düzeltmek istiyorum.

Bunun için gerçekten bir çözüm varsa ve hatta basit bir çözüm varsa, yardım için minnettar olacağım.


 
artmedia70 :

Şimdi trend çizgisi ile kesişimi belirleyemediğinden bahsediyorsunuz. Ama bu sadece beni gülümsetiyor. Yoksa yine her şeyi doğru anlamıyor muyum ve başka bir kabalığa layık mıyım? En basit işlev olan ObjectGetValueByShift() belirli bir çubuktaki trend çizgisinin fiyatını döndürür. Bu yüzden bir fiyatı diğeriyle karşılaştırın.


EVladMih dinlemeyin - saçma sapan yazıyor.
Fiyat söz konusu olduğunda trend çizgisine olan mesafeyi nasıl bulacağımı çok iyi biliyorum. Soru farklı.

Göstergemde sürekli ekranın üst kısmında asılı duran etiketler kullanıyorum. Herhangi bir etiketin kaydırılmasından sonra, etiketten trend çizgisine olan mesafeyi belirlemek gerekir, ancak etiketlerin ekranda koordinatları (x,y) vardır ve ObjectGetValueByShift fiyatla çalışır, yani. farklı bir koordinat sisteminde İşte bütün karmaşa burada başladı.

Önceden söyleyeyim, örneğin etiketler yerine fiyat koordinatları olan bir OBJ_TEXT nesnesi kullanamam, çünkü fiyat tablosu taşınırsa bunların (etiketlerin) fiyatla birlikte hareket etmemesi, etiketlerin yaptığı gibi tek bir yerde asılı kalması gerekir (object OBJ_LABEL )

 
satorifx :

EVladMih dinlemeyin - saçma sapan yazıyor.
Fiyat söz konusu olduğunda trend çizgisine olan mesafeyi nasıl bulacağımı çok iyi biliyorum. Soru farklı.

Göstergemde sürekli ekranın üst kısmında asılı duran etiketler kullanıyorum. Herhangi bir etiketin kaydırılmasından sonra, etiketten trend çizgisine olan mesafeyi belirlemek gerekir, ancak etiketlerin ekranda koordinatları (x,y) vardır ve ObjectGetValueByShift fiyatla çalışır, yani. farklı bir koordinat sisteminde İşte bütün karmaşa burada başladı.

Önceden söyleyeyim, örneğin etiketler yerine fiyat koordinatları olan bir OBJ_TEXT nesnesi kullanamam, çünkü fiyat tablosu taşınırsa bunların (etiketlerin) fiyatla birlikte hareket etmemesi, etiketlerin yaptığı gibi tek bir yerde asılı kalması gerekir (object OBJ_LABEL )

Yeniden hesaplamalarla uğraşmamak için, bir etiket yerine, belirli bir çubuğa sabit x = koordinatıyla OK kullanın. Çubuk, nesnenin açıklamasında saklanabilir ve değiştirilebilir. Nesne hareket eder etmez, tanımına yeni bara eşit yeni bir x-koordinatı girin. O zaman fiyatı bulmakta sorun olmayacak. Ve her zaman, açıklamaya göre, nesnenin konumunu yatay eksen boyunca belirleyin. Dikey eksen fiyattır. Bu daha az maliyetli bir seçenektir. Ve nesne her zaman x ekseni boyunca belirli bir çubuk numarasına karşılık gelen aynı yerde bulunacaktır.

Not "... Özür dilerim ve bu kabalığı düşünmemenizi rica ediyorum ..." Her şey yolunda, sürdük ...;)

 

Bir hindi serptim. Terminale dahil olmayan enstrümanları almak için bir çifti diğerine böler. Ama şimdi terminali yükler, her onayda yeniden hesaplar. Danışman olarak girdi

if (Zaman[0]<=ÖncekiZaman) return(0);

ÖncekiZaman=Zaman[0];

şimdi sadece yeni bir mumdan yararlanıyor. Bana nasıl olacağımı söyle. Hint metni.

P / S / Bu arada, başka bir şaka. Tüm çiftler normalde gösterir. Ruble için Appl'ı görmek istedim. Hiçbirini istemiyor.

#özellik göstergesi_separate_window
#özellik göstergesi_tamponları 1
#özellik göstergesi_color1 Kireç
//--- giriş parametreleri
dış dize Paar_1="EURUSD"; // İstenen karşılaştırma aracı
dış dize Paar_2="GBPUSD"; // İstenen karşılaştırma aracı
extern bool Mirroring_Paar_2=yanlış;
//--- arabellekler
çift ExtMapBuffer1[];
statik int PrevTime=0;
int başlangıç=1;


//+------------------------------------------- --------------------+
//| özel gösterge başlatma işlevi |
//+------------------------------------------- --------------------+
int init()
{
//---- göstergeler
string short_name=Paar_1;
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer1);
GöstergeShortName(short_name);
SetIndexLabel(0,short_name);
//----
dönüş(0);
}
//+------------------------------------------- --------------------+
//| özel gösterge sıfırlama işlevi |
//+------------------------------------------- --------------------+
int tanım()
{
//----

//----
dönüş(0);
}
//+------------------------------------------- --------------------+
//| özel gösterge yineleme işlevi |
//+------------------------------------------- --------------------+
int başlangıç()
{
if (Zaman[0]<=ÖncekiZaman && başlangıç==1) return(0);
ÖncekiZaman=Zaman[0];
int i, counted_bars=IndicatorCounted();
i=sayılan_bars-1;
//----
while(i>=0){
double Compare1=iClose(Paar_1,0,iBarShift(Paar_1,0,iTime(Paar_1,0,i),FALSE));
double Compare2=iClose(Paar_2,0,iBarShift(Paar_1,0,iTime(Paar_1,0,i),FALSE));
if(Karşılaştır2!=0 && Karşılaştır1!=0) çift Karşılaştır=Karşılaştır1/Karşılaştır2;
if(Mirroring_Paar_2==1) Karşılaştır=1/Karşılaştır;

ExtMapBuffer1[i]=Karşılaştır;
Yeniler();
ben--;
}
//----
başlangıç=0;
dönüş(0);
}
//+------------------------------------------- -------------------+y

 
Merhaba!
Yardım, unuttum!! Açılış emirleri arasında gecikme nasıl yapılır, Sleep 3000? Tam olarak nasıl olduğunu hatırlamıyorum.
int start() {
dizi ls_0;
intli_8;
bool li_12;
intli_20;
intli_24;
çift ld_28;
intli_36;
intli_40;
dizi ls_48;
dizi ls_56;
dizi ls_64;
çift ld_76;
intli_84;
Ve burada olduğu gibi yerleştirilmelidir.

Her ihtimale karşı, baykuşun kendisi

Başka bir soru, bu baykuş aynı anda yedi çift üzerine yerleştirilmiş, sadece açılış emirleri arasında duraklamam gerekiyor! Mesela bugün haberlerde aynı anda 10 sipariş açıldı ama gecikmeli olarak ihtiyacım var.

Teşekkür ederim!

/* Geri derleme kaldırıldı - Vinin */

 

Pek bir şey hatırlamıyordum, bana Sleep'i nereye ekleyeceğimi söyle (60000); böylece açıklıklar arasında bir gecikme olur

if (ai_8 == OP_BUY) ad_20 = Sor;
if (ai_8 == OP_SELL) ad_20 = Teklif;
if (!IsTradeContextBusy()) {
li_68 = OrderSend(as_0, ai_8, ad_12, NormalizeDouble (ad_20, MarketInfo(as_0, MODE_DIGITS)), ai_28, NormalizeDouble(ad_32, MarketInfo(as_0, MODE_DIGITS)), NormalizeDouble(ad_40,
MarketInfo(as_0, MODE_DIGITS)), as_48, ai_56, ai_60, ai_64);
if (li_68 > 0) {
Print("orderSendReliable(): Başarılı! Bilet: " + li_68);
dönüş(li_68);
}



 

Çalmak çalıntı, ama onunla ne yapacağınız hakkında hiçbir fikriniz yok))

Henüz kendim için danışman yazmadım, sadece okudum, diğer insanların eğri baykuşlarını akış şemalarına ayırdım, optimal yaklaşımı anlamaya çalışıyorum

yani yanılıyor olabilirim

 int counterrore= 0 , //подщет количества ошибок открытия ордера
timesleep= 10000 ; // время задержки
while () // до тех пор пока не будет выход с цыкла
{
 if (!IsTradeContextBusy())
 { 
  RefreshRates(); // последние данные
   if (ai_8 == OP_BUY) ad_20 = Ask;
   if (ai_8 == OP_SELL) ad_20 = Bid;
  li_68 = OrderSend (as_0, ai_8, ad_12, NormalizeDouble (ad_20, MarketInfo(as_0, MODE_DIGITS)), ai_28, NormalizeDouble (ad_32, MarketInfo(as_0, MODE_DIGITS)), NormalizeDouble (ad_40,
  MarketInfo(as_0, MODE_DIGITS)), as_48, ai_56, ai_60, ai_64);
   if (li_68 > 0 ) 
  {
   Print ( "orderSendReliable(): Success! Ticket: " + li_68);
   return (li_68);
  }
   Print ( "orderSendReliable(): False! Error " + GetlastError()); // поищите коректную функцию обработки ошибок
  counterrore++; // количество неудач - сумирование

   if (counterrore> 6 ) // если не удалось 6 раз открыть
  {
   Print ( "orderSendReliable(): Error!!! " +counterrore+ "times --return(-1)" ); // сообщаем логу о даной трагедии
   return (- 1 ); // -1 или что там Вы придумаете для отработки ситуации
  }
 }
 Sleep (timesleep); // время сна для цикла посылки  запроса на сервер и для !IsTradeContextBusy()
}
 
Şimdi moderatörler gelip önümde son ikisini yasaklayacak :-))