MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1946

 
Alexey Viktorov # :

Tüm göstergeler tek bir iş parçacığında çalışır. Buna göre, her gösterge işlemci kaynaklarının bir kısmını tüketir. Aynı parametrelere sahip 100500 gösterge koyun ve terminale ne olacak? Önümüzdeki 20 dakika içinde tamamen mutlu olmanız için 300 gram patates yeterliyse ve omuzlarınıza dolu bir çanta konur. Bunu nasıl seversin?

Açık. Açıklama için teşekkürler.
 

Söyle bana, kod tabanında bir yerde, bu tarzda gösterge alt penceresinde çizim yaparken tanıştım.

Ben bulamıyorum


 
makssub # :

tünaydın. Vile'ı okudum. Ekleyemez veya çıkaramazsınız.
Para yönetimi hakkında bir şey söyleyemem. denemedi.
En son revizyon ektedir. Ama orada zaten her şeyi kendim için karıştırdım)
Seçilen siparişin Order1(2) karı
Seçilen siparişin Order1(3) lotu

Kodu anlayamadım.

açıklamaya çalışacağım. Umarım gerekli siparişlerin biletlerini biliyorsunuzdur, bu görevi büyük ölçüde basitleştirir. Koşullar. Kârı sıfırdan büyük olan kârlı bir emir var, zarar eden bir emir var, sıfırdan küçük bir kâr var ve kârlı bir kârdan fazla kâr var ve zarar eden bir emrin kısmen kapanması şartı var.

Genel olarak emirler çok yönlü ise OrderCloseBy üzerinden düşünmeden kapatabilirsiniz. Daha küçük kârlı kısma eşit olan daha küçük kârsız kısım kapatılacaktır. Sadece 2 bilet gerekli.

Her iki siparişin OrderProfit() (bu para) ve OrderLots() (bu lot cinsinden hacim) elde edilmesi daha zor olabilir. Kârın zarara oranını hesaplayın ve kârlı siparişi kapatın ve bu kısım kârsız olandan lotlar halinde. Kar ve sipariş lotlarını almadan önce, önce OrderSelect'i seçmelisiniz.

 // ticket1 тикет прибыльного ордера, ticket2 убыточного

bool sel1= OrderSelect (ticket1,SELECT_BY_TICKET,MODE_TRADES);
double profit1=OrderProfit();
double   Lts1=OrderLots();
double price1= 0 ; if (OrderType()== 0 )price1=Bid; else price1=Ask;

bool sel2= OrderSelect (ticket2,SELECT_BY_TICKET,MODE_TRADES);
double profit2=OrderProfit();                     // profit1 < profit2 можно условием впереди поставить
double   Lts2=OrderLots();
double price2= 0 ; if (OrderType()== 0 )price2=Bid; else price2=Ask;

double ratio= fabs (profit1/profit2); // или если ratio<1, и берем модуль, у нас один профит меньше нуля
double lotsl=Lts2*ratio;

 Alert ( "Попытка закрыть прибыльный ордер тикет1 " ,ticket1, ". Ожидание ответа.." );
         RefreshRates();                         // Обновление данных
 bool     Ans1=OrderClose(ticket1,Lts1,price1, 2 );       // Закрытие прибыльного ордера
         if (Ans1== true ) // Получилось :)
         Alert ( "Закрыт ордер тикет1 " ,ticket1, ". профит1 " ,profit1); 
else Alert ( " Ошибка при закрытии ордера  тикет1" ,ticket1, " Код ошибки " , GetLastError ());

Alert ( "Попытка закрыть часть ордера тикет2 " ,ticket2, ". Ожидание ответа.." );
         RefreshRates();                         // Обновление данных
bool      Ans2=OrderClose(ticket2,lotsl,price2, 2 );       // Закрытие убыточного ордера частично
         if (Ans2== true ) // Получилось :)
         Alert ( "Закрыт частично ордер тикет2 " ,ticket2, ". профит2 " ,profit2); 
else Alert ( " Ошибка при закрытии ордера  тикет2" ,ticket2, " Код ошибки " , GetLastError ());

 

  
 


Закрытие и удаление ордеров - Торговые операции - Учебник по MQL4
Закрытие и удаление ордеров - Торговые операции - Учебник по MQL4
  • book.mql4.com
Закрытие и удаление ордеров - Торговые операции - Учебник по MQL4
 
Vitaly Muzichenko # :

Söyle bana, kod tabanında bir yerde, bu tarzda gösterge alt penceresinde çizim yaparken tanıştım.

Ben bulamıyorum


Scriptor'daki göstergelere bakın

Scriptor
Scriptor
  • 2019.02.10
  • www.mql5.com
Профиль трейдера
 
Artyom Trishkin # :

Scriptor'daki göstergelere bakın

Teşekkürler, buldum ama biraz farklı, sadece bir satır için

 
Vitaly Muzichenko # :

Teşekkürler, buldum ama biraz farklı, sadece bir satır için

Sanırım birkaç sıra var.

 
Artyom Trishkin # :

Bence, orada birkaç sıra var.

1500'den fazla kod var muhtemelen kaçırmışımdır maalesef

 
Vitaly Muzichenko # :

Teşekkürler, buldum ama biraz farklı, sadece bir satır için

Vitaly, beni şaşırtıyorsun. Tüm bu göstergeler, ilgili kodla DRAW_ARROW'un oluşturulmasına dayanmaktadır. Resminizde kareler var, bu kod 167

       ObjectSetInteger ( 0 , up_arrow, OBJPROP_ARROWCODE , 167 );     // установим код стрелки 

Ve sıranın seviyesi, kedinin veya Artyom'un kedisinin istediği gibi ayarlanır. Belki tam sayılarda, belki ondalıklarda.

Başlayın ve neyin işe yaramadığını sorun.

 
Vitaly Muzichenko # :

Söyle bana, kod tabanında bir yerde, bu tarzda gösterge alt penceresinde çizim yaparken tanıştım.

Ben bulamıyorum


sadece DRAW_ARROW uygun değil mi?

Tek renkle çizerseniz 8, iki renkle çizerseniz 16 tampon.

veya büyük bir çizgi kalınlığına sahip DRAW_COLOR_LINE.

anlamı çizgiler hep aynı seviyede (ilk 1 saniye 2 vs), sadece renk değişiyor.

 
Alexey Viktorov # :

Vitaly, beni şaşırtıyorsun. Tüm bu göstergeler, ilgili kodla DRAW_ARROW'un oluşturulmasına dayanmaktadır. Resminizde kareler var, bu kod 167

Ve sıranın seviyesi, kedinin veya Artyom'un kedisinin istediği gibi ayarlanır. Belki tam sayılarda, belki ondalıklarda.

Başlayın ve neyin işe yaramadığını sorun.

Alttan girinti prensibi net değil, bu yüzden birkaç satırda bile

Başlayamadığım yer burası.