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

 
Desead :
İnsanlar, düzenleyicide daha önce, ayrılmış bir kelimenin üzerine geldiğinizde ve f1 tuşuna bastığınızda, aşağıdan bu işlevin açıklamasının bulunduğu bir pencere açılır, şimdi bende yok. Sorun ne olabilir?
Daha önce CTRL+F1 tuşlarına bastınız.
 
Sonucu nasıl her zaman olumlu hale getireceğinizi size kim söyleyecek? (Parti al - Lot sat) = -0.25, ama her zaman pozitif mi olmalı?
 
mikanit :
Sonucu nasıl her zaman olumlu hale getireceğinizi size kim söyleyecek? (Parti al - Lot sat) = -0.25, ama her zaman pozitif mi olmalı?
MathAbs() .
 

Ben de öyle yapıyorum: if (profitbuy+profitsell > SymbProf_magBUY_magSELL* MathAbs(( OrdersTotalMagicBuyLots (MagicBuy)-OrdersTotalMagicSellLots(MagicSell))/Lots)())

parantez içinde ne var?

 

if (kârbuy+kârsell > SymbProf_magBUY_magSELL* MathAbs(( OrdersTotalMagicBuyLots (MagicBuy)-OrdersTotalMagicSellLots(MagicSell))/Lots)(??????))

nerede ???? ne?

 
Teşekkürler, anladım.
 

Hacmi = 0.05 olan bir pozisyon açıyorum. Bir koda ihtiyacınız var - 5 basamak için 100 puanlık bir kayba ulaşıldığında bir pozisyonun hacmi nasıl 0,01 azaltılır ???

Teşekkür ederim.

 

Kaç Uzman Danışman yazdım, her yerde işten çıkarmalarla işlem yaparken piyasa koşullarını kontrol edeceğim (durdurma kolu, spread vb.). Izgaraları nasıl yazdıklarına baktım, bu yüzden hiçbirinde görmedim, en azından bazılarını göndermeden önce. bir siparişin aynı durdurma seviyesinin değeri kontrol edildi. Sebebi ne?

 
alsu :

Forumda test cihazı ve sonuçlarının neden gerçek hayattan farklı olduğu hakkında birçok materyal var. Makaleler bölümüne bakın, orada bu konuya bir kereden fazla değinildi.

Teşekkür ederim.
 

Bir alternatif bulundu.

alsu :

Bu, dizenin DLL'ye MqlStr olarak değil, tam olarak char* olarak geçirildiği anlamına gelir. Ancak bu , ex4 programının dizeyi MqlString olarak saklamadığı anlamına gelmez. Genel olarak, parametreleri ex4'ten dll'ye geçirmek (geliştiricilere göre) her türlü kontrol ve parametre dönüşümünün eşlik ettiği oldukça karmaşık bir işlemdir.

Zhunko :

MQL4 Yardımını okudunuz mu? Bir MQL4 dizgisi, boş bir sonlandırıcı ile aynı c-dizesidir.

Yapı yalnızca bir dizi diziyi düzenlemek içindir. Tamamen Metaquotes' fikri, dize dizileri oluşturmayı kolaylaştırır.

StrStrA , shlwapi.dll kitaplığından. Ölçek:

 #property indicator_chart_window
#import "stdlib.ex4"
string IntegerToHexString( int integer_number);//это для перевода десятичного формата в шестнадцатеричный, используем в print.
#import "StrAddress.dll"
int GetStrAddress( string szStr);//из самописной dll.
#import "shlwapi.dll"
int StrStrA( string pszFirst, string pszSrch);//из WinAPI.
#import

int addr1;//будет выходной переменной для функции из самописной dll.
int addr2;//то же самое для функции из WinAPI.

int init()
  {//тестовый прогон; в init(), это чтобы не повторялось
   string s; strAddress (s);
   s= "" ; strAddress (s);
   s=s+ "something" ; strAddress (s);
   s= "MyStr" ; strAddress (s);
   s= "mystr" ; strAddress (s);
   return ( 0 );
  }

int start()
  {
   int     counted_bars=IndicatorCounted();//оставляем блок пустым
   
   return ( 0 );
  }

void strAddress ( string myStr)//тестовая функция
  {
   addr1=GetStrAddress(myStr);//эта из dll
   addr2=StrStrA(myStr,myStr);//эта из WinAPI
   Print ( " строка " , CharToStr( 34 ), myStr, CharToStr( 34 ), " указатель 1: " , IntegerToHexString(addr1), ", указатель 2: " , IntegerToHexString(addr2));//в лог
  }

Kayıt:

строка "" указатель 1 : 00000000 , указатель 2 : 00000000
строка "" указатель 1 : 043 BE440, указатель 2 : 00000000
строка "something" указатель 1 : 043 C8970 указатель 2 : 043 C8970
строка "MyStr" указатель 1 : 043 BE450, указатель 2 : 043 BE450
строка "mystr" указатель 1 : 043 BE458, указатель 2 : 043 BE458

строка "" указатель 1 : 00000000 , указатель 2 : 00000000
строка "" указатель 1 : 01 C980E0, указатель 2 : 00000000
строка "something" указатель 1 : 01 CDD050, указатель 2 : 01 CDD050
строка "MyStr" указатель 1 : 01 C980F0, указатель 2 : 01 C980F0
строка "mystr" указатель 1 : 01 C980F8, указатель 2 : 01 C980F8

строка "" указатель 1 : 00000000 , указатель 2 : 00000000
строка "" указатель 1 : 01 CAFF20, указатель 2 : 00000000
строка "something" указатель 1 : 01 CA7100, указатель 2 : 01 CA7100
строка "MyStr" указатель 1 : 01 CAFF30, указатель 2 : 01 CAFF30
строка "mystr" указатель 1 : 01 CAFF38, указатель 2 : 01 CAFF38

Mekanizma aşağıdaki gibidir. /system32'de shlwapi.dll. StrStrA, StringSubstr'nin WinAPI karşılığıdır . MQL4 tipsiz bir dildir ve çıktıya bir dizge değil de bir int tuzak koyarsak, bir dizge değil, ona bir işaretçi alırız. StrStrA, dizgede bir alt dizginin ilk oluşumunu arar (büyük/küçük harfe duyarlıdır, ancak dizgelerimiz aynı olduğu için umursamıyoruz) ve dizgilerimiz aynı olduğundan, dizgenin ilk karakterine bir işaretçi döndürür. , yani çizginin kendisine.

Bu kodu kullanacaklar için açıklayayım. WinAPI'de dize biçimi yoktur. Bunun yerine, yalnızca lpsz biçimi (0x00, diğer adıyla /0 ile biten karakter dizisinin ilk öğesine bir işaretçi). Bir bellek adresine işaretçi. Ve 32 bitlik bellek hücrelerimiz (yani 4 bayt) olduğundan ve int de 4 bayt boyutunda olduğundan, her şey oraya düzgünce sığar.

Alt satır: dizeleri güvenli bir şekilde int dizilerine paketleyebilir, böylece bir yapı veya sınıf gerekliyse bunları bir dll'ye daha fazla iletmek için yapıları taklit edebilirsiniz (MQL4'te hiçbir yapı ve sınıf yoktur). Veri türlerini çevirmek için kendi kendine yazılan dll'ler (yani "int(const char*)" (C-tipi çeviri) gibi yapılar veya C++'daki benzerleri) artık kullanılamaz.