Merhaba! 2 sembol kullanan bir gösterge oluşturmaya çalıştım (örneğin EURUSD ve GBPUSD), çizmiyor (4806 hatası veriyor...) OnInit işlevinde her sembolün gösterge tutamaçlarını (örneğin iRSI) alıyorum, OnCalculate'de işlev Gösterge verilerini arabelleklere kopyalarım ve onlarla daha fazla işlemle harcarım... ve böylece, bir sembolün gösterge verileri (göstergeyi eklediğim grafikteki sembolle eşleşen sembol için) normal olarak alınır, ancak ikinci sembolün gösterge verileri alınmadı... yani. sadece göstergenin iliştirildiği çizelgedeki sembolle eşleşen sembol için veri alır...neyi yanlış yapıyorum?
FinEngineer : Merhaba! 2 sembol kullanan bir gösterge oluşturmaya çalıştım (örneğin EURUSD ve GBPUSD), çizmiyor (4806 hatası veriyor...) OnInit işlevinde her sembolün gösterge tutamaçlarını (örneğin iRSI) alıyorum, OnCalculate'de işlev Gösterge verilerini arabelleklere kopyalarım ve onlarla daha fazla işlemle harcarım... ve böylece, bir sembolün gösterge verileri (göstergeyi eklediğim grafikteki sembolle eşleşen sembol için) normal olarak alınır, ancak ikinci sembolün gösterge verileri alınmadı... yani. sadece göstergenin iliştirildiği çizelgedeki sembolle eşleşen sembol için veri alır...neyi yanlış yapıyorum?
Bu yüzden kodun soruna neden olan kısmını gösterin.
Kodun tamamını gönderiyorum çünkü hiçbir şey çalışmıyor, her şey mql4'te çok daha basitti, belki de alışkanlıktan dolayı... bu tutamaçlar ve yardımcı arabellekler aklınızı başınızdan alıyor.
Bence anlam açık (2 ilişkilendirme aracının rsi'sindeki fark), lütfen yardım edin ... hataları işaret edin?
#property telif hakkı "Telif hakkı 2012, MetaQuotes Software Corp."
MQL5: language of trade strategies built-in the MetaTrader 5 Trading Platform, allows writing your own trading robots, technical indicators, scripts and libraries of functions
MACD, EURUSD grafiğine eklenirse, her şey çizilir, başka bir tabloya eklenirse, 4806 hatası görünür... Göstergede istediğiniz kadar sembol kullanmayı nasıl mümkün kılarsınız?
Bana daha önce ortaya konan göstergeyi nasıl çalıştıracağımı söylerseniz, çok minnettar olacağım.
İstemiyorsanız, değişkeni doğru bir şekilde düşünmeniz gerekir.
Değişken başarılarla, Schablon dosyasının özünü yakaladım, koşullarımı biraz yönlendirdim ve Yaşasın - duraklar ve karlar belirlendi. Ancak, benim için önemli bir çıkmaz var - kene üzerine değil, bir sonraki muma ayarlandılar. Danışmanın bir parçasını getiriyorum.
Değişken başarılarla, Schablon dosyasının özünü yakaladım, koşullarımı biraz yönlendirdim ve Yaşasın - duraklar ve karlar belirlendi. Ancak, benim için önemli bir çıkmaz var - kene üzerine değil, bir sonraki muma ayarlandılar. Kodun bir kısmını gönderiyorum.
inputdouble TP = 0.003 ;
inputdouble STR = 0.0012 ;
inputdouble TR = 0.0002 ;
//=============================================== //Един вид извикване на модификация на отворената позицияdouble buy_trail = 0 ;
double sel_trail = 0 ;
double SL,T_P,Open;
ulong L_S;
Ну ладно-обяснения:
if ( PositionSelect ( _Symbol )){ //Ест ли позиция по символа
Open = PositionGetDouble ( POSITION_PRICE_OPEN ); //цена опен для поза
SL = PositionGetDouble ( POSITION_SL ); //цена стоп для поза
T_P = PositionGetDouble ( POSITION_TP ); //цена тейк для поза
Bid = SymbolInfoDouble ( _Symbol , SYMBOL_BID ); //цена бид
Ask = SymbolInfoDouble ( _Symbol , SYMBOL_ASK ); //цена аск
L_S = SymbolInfoInteger ( _Symbol , SYMBOL_TRADE_STOPS_LEVEL ); //стоп ниво,если ест такое-оно в пункты
buy_trail = NormalizeDouble (Bid - Open, Digits ()); //вычисляем разстояние от цена бид и цена опен позиции-ето для бай
sel_trail = NormalizeDouble (Open - Ask, Digits ()); //вычисляем разстояние от цена опен позиции и цена аск-ето для селif ( PositionGetInteger ( POSITION_TYPE )== POSITION_TYPE_BUY ) //если ест бай поза
{
if (buy_trail > STR) //если разстояние болше указаное
{
if ( NormalizeDouble ((Bid - STR), Digits ()) >= Open && Open > SL)
//если цена бид минус указаное разстояние болше щем цена опен и цена опен болше цена стоп-вызиваем модификация//сама модификация-для стоп будет цена опен,цена тейк не меняем.
{
ModifyPosition( _Symbol ,Open,T_P);
}
if ( NormalizeDouble ((Bid - TR), Digits ()) > SL && Open <= SL)
//если цена бид минус указаное разстояние TR = 0.0002 болше уже от новый стоп(который поменяли уже) и цена опен менше новый стоп //вызиваем модификация//сама модификация - для стоп будет прошлый стоп минус стоп ниво* _Point(что б стали пипси) плюс указаное TR,цена тейк не меняем.//Т.е. будем двигат стоп через каждые 2 пипса
{
ModifyPosition( _Symbol , NormalizeDouble (((SL - L_S * _Point ) + TR), Digits ()),T_P);
}
}
}
if ( PositionGetInteger ( POSITION_TYPE )== POSITION_TYPE_SELL )
{
if (sel_trail > STR)
{
if ( NormalizeDouble ((Ask + STR), Digits ()) <= Open && Open < SL)
{
ModifyPosition( _Symbol ,Open,T_P);
}
if ( NormalizeDouble ((Ask + TR), Digits ()) < SL && Open >= SL)
{
ModifyPosition( _Symbol , NormalizeDouble (((SL +L_S * _Point )- TR), Digits ()),T_P);
}
}
}
}
//===============================================
Bazı eylemlerin gerçekleştiği koşulları yazmak her zaman gereklidir, ancak her şey düşünülür ve böylece mantık vardır.
Yardım için print(Print(" ", ); ) yazın ve neyin size geri döndüğünü görün - yazdıklarınızın sonucunu.
Tüm açıklamalar açık ve işe yarıyor. Ancak bu, "başabaş" ve "sondaki" bir değişikliktir. Ve bir sipariş açtıktan sonra Stoplimit ve TakeProfit ayarı için bir değişiklik yazmam gerekiyor, yani
1. Sipariş açma
--------
2. Limiti durdurmak için değişiklik (bu henüz değil!)
2. noktaya göre, değişiklik gerçekleşir, ancak bir sonraki çubuğun başlangıcı ile, ancak siparişin açılmasını takiben onay işaretine bağlanması gerekir.
Bu başlıkta MQL5 geliştiricileri var!??? Acaba soruyu yanlış başlıkta mı soruyorum? O zaman geliştiricilere nasıl soru soracağımı söyle ??? Soru yukarıda belirtilmiştir, deneyimli bir programcı için temeldir...
Merhaba! 2 sembol kullanan bir gösterge oluşturmaya çalıştım (örneğin EURUSD ve GBPUSD), çizmiyor (4806 hatası veriyor...) OnInit işlevinde her sembolün gösterge tutamaçlarını (örneğin iRSI) alıyorum, OnCalculate'de işlev Gösterge verilerini arabelleklere kopyalarım ve onlarla daha fazla işlemle harcarım... ve böylece, bir sembolün gösterge verileri (göstergeyi eklediğim grafikteki sembolle eşleşen sembol için) normal olarak alınır, ancak ikinci sembolün gösterge verileri alınmadı... yani. sadece göstergenin iliştirildiği çizelgedeki sembolle eşleşen sembol için veri alır...neyi yanlış yapıyorum?
Kodun tamamını gönderiyorum çünkü hiçbir şey çalışmıyor, her şey mql4'te çok daha basitti, belki de alışkanlıktan dolayı... bu tutamaçlar ve yardımcı arabellekler aklınızı başınızdan alıyor.
Bence anlam açık (2 ilişkilendirme aracının rsi'sindeki fark), lütfen yardım edin ... hataları işaret edin?
#property telif hakkı "Telif hakkı 2012, MetaQuotes Software Corp."1 numaralı hata
SRC anahtarını kullanmayı reddetme
Örneğin, standart kullanıcı tanımlı MACD göstergesini alıp içindeki satırı değiştirirsek benzer bir hata oluşur.
ExtFastMaHandle=iMA(NULL,0,InpFastEMA,0,MODE_EMA,InpAppliedPrice);
üzerinde
ExtFastMaHandle=iMA("EURUSD",0,InpFastEMA,0,MODE_EMA,InpAppliedPrice);
MACD, EURUSD grafiğine eklenirse, her şey çizilir, başka bir tabloya eklenirse, 4806 hatası görünür... Göstergede istediğiniz kadar sembol kullanmayı nasıl mümkün kılarsınız?
Bana daha önce ortaya konan göstergeyi nasıl çalıştıracağımı söylerseniz, çok minnettar olacağım.
Lester : Buraya bir şablon koydum, yemek yedim ve içeride değişiklik yaptım, nasıl emekleneceğini gösterdim.
https://www.mql5.com/ru/forum/6343/page73
İstemiyorsanız, değişkeni doğru bir şekilde düşünmeniz gerekir.
Değişken başarılarla, Schablon dosyasının özünü yakaladım, koşullarımı biraz yönlendirdim ve Yaşasın - duraklar ve karlar belirlendi. Ancak, benim için önemli bir çıkmaz var - kene üzerine değil, bir sonraki muma ayarlandılar. Danışmanın bir parçasını getiriyorum.
Değişken başarılarla, Schablon dosyasının özünü yakaladım, koşullarımı biraz yönlendirdim ve Yaşasın - duraklar ve karlar belirlendi. Ancak, benim için önemli bir çıkmaz var - kene üzerine değil, bir sonraki muma ayarlandılar. Kodun bir kısmını gönderiyorum.
Bazı eylemlerin gerçekleştiği koşulları yazmak her zaman gereklidir, ancak her şey düşünülür ve böylece mantık vardır.
Yardım için print(Print(" ", ); ) yazın ve neyin size geri döndüğünü görün - yazdıklarınızın sonucunu.
Tüm açıklamalar açık ve işe yarıyor. Ancak bu, "başabaş" ve "sondaki" bir değişikliktir. Ve bir sipariş açtıktan sonra Stoplimit ve TakeProfit ayarı için bir değişiklik yazmam gerekiyor, yani
1. Sipariş açma
--------
2. Limiti durdurmak için değişiklik (bu henüz değil!)
------
3. bile kırmak için değişiklik
4.Sondaki değişiklik
5. Bir siparişi kapatma
2. noktaya göre, değişiklik gerçekleşir, ancak bir sonraki çubuğun başlangıcı ile, ancak siparişin açılmasını takiben onay işaretine bağlanması gerekir.
Yemekleri açmak için bir fonksiyon yazılır: