[Arşivle!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 2. - sayfa 404

 
Dimka-novitsek :
Döngü yapılamaz, X ve Y her zaman 0'dır.

Her şeyden önce, düşüncelerinizdeki çöpleri temizleyin.

kodunuzu güzel ve yapılandırılmış hale getirin .

ve yorumlar için açgözlü olmayın.

 

Evet elbette.

İlk önce bu döviz çiftinde gerekli sihirli numaraya sahip emirleri seçiyorum. if( OrderMagicNumber( )==2000 &&OrderSymbol()==Symbol()) {

Ayrıca eğer sayı ve çift aynı ise for( i=OrdersTotal();i==0;i--) döngüsünde bu OrderSelect(i,SELECT_BY_POS ); ve sonra OP_SELLSTOP gibi kaç sipariş sayarım

Sipariş yoksa, mevcut olmayan türden bir sipariş açarız. Üst döngüdeki X ve alt döngüdeki Y değişkeni, gerekli türdeki siparişlerin sayısıdır. Her iki döngü de yapı ve amaç bakımından aynıdır.

Ben zaten açıklamalarla yazdım ama sonra baba geldi aradı süt çay helva getirdi ama mesaj atmadım işemeye gittim baba gönderilmeyen mesajı sildi ne olur bir başka yazarmısın arama motoru penceresi ?? Ben de ısırgan ezmesinin ne olduğunu merak ediyorum, biraz korktum ve neredeyse açıklama yapmadan gönderdim.

Yani, X b Y her zaman 0'a eşittir. Muhtemelen for döngüsü çalışmıyor. Kısacası, orada neyin işe yaramayacağını hiç anlamıyorum, bu nedenle siparişler her tıklamada 2 tane açılıyor.

 
Dimka-novitsek :

Evet elbette.

İlk önce bu döviz çiftinde gerekli sihirli numaraya sahip emirleri seçiyorum. if( OrderMagicNumber( )==2000 &&OrderSymbol()==Symbol()) {

Ayrıca eğer sayı ve çift aynı ise for( i=OrdersTotal(); i==0; i--) döngüsünde bu OrderSelect(i,SELECT_BY_POS ); ve sonra OP_SELLSTOP gibi kaç sipariş sayarım

Sipariş yoksa, mevcut olmayan türden bir sipariş açarız. Üst döngüdeki X ve alt döngüdeki Y değişkeni, gerekli türdeki siparişlerin sayısıdır. Her iki döngü de yapı ve amaç bakımından aynıdır.

Ben zaten açıklamalarla yazdım ama sonra baba geldi aradı süt çay helva getirdi ama mesaj atmadım işemeye gittim baba gönderilmeyen mesajı sildi ne olur bir başka yazarmısın arama motoru penceresi ?? Ben de ısırgan ezmesinin ne olduğunu merak ediyorum, biraz korktum ve neredeyse açıklama yapmadan gönderdim.

Yani, X b Y her zaman 0'a eşittir. Muhtemelen for döngüsü çalışmıyor. Kısacası, orada neyin işe yaramayacağını hiç anlamıyorum, bu nedenle her tikte 2 sipariş açılıyor.


kesinlikle doğru, for döngüleri istediğini yapmaz.

şunu yazdınız: for( i=OrdersTotal();i==0;i--)

1) 0 emir varsa, döngü 1 kez yürütülür. Aynı zamanda kimin ne bildiğini ve kimin ne yapacağını, kim bilir ne yapacağını seçecektir =)

2) 0'dan fazla sipariş varsa, "i==0" koşulu karşılanmadığından döngü hiç başlamaz.

 
Teşekkürler!! Şu anda hala kılavuzu okuyorum!
 
Evet! Teşekkürler!!
 
Ds bilirsiniz, aklıma getiremezsiniz her şey aynı.
 //+------------------------------------------------------------------+
//|                                                    для лавин.mq4 |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net"
extern double stoploss= 0 ; extern double takeprofit= 20 ; extern int otstup= 20 ; extern datetime expiration= 0 ;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
 int tiket,tikett; double volume= 0.1 ; int i= 0 ,R1= 0 ,R2= 0 ,A= 1 ; double price= PRICE_OPEN ;
   //  R1=((PRICE_OPEN- stoploss*Point)*stoploss)/stoploss;R2=((PRICE_OPEN+ stoploss*Point)*stoploss)/stoploss;
     
     
int start()
  {       int X,Y; double price=(Ask+Bid)/ 2 ;            
//----
       Alert ( "OrdersTotal()" , OrdersTotal ());

if (OrderSymbol()== Symbol ()&&OrderMagicNumber( )== 1000 ){
 for ( int i= OrdersTotal ();i> 0 ;i--){ Alert ( "i" , i);
OrderSelect (i,SELECT_BY_POS ); if (OrderType( )==OP_BUYSTOP){X++;}}} Alert ( "X" , X);
if (X== 0 ){


   tiket= OrderSend ( Symbol (), OP_BUYSTOP,  volume*A, price +otstup* Point , Point * 3 , R1, price+takeprofit* Point +otstup* Point , "OP_BUYSTOP" , 1000 ,  expiration, Red ); 
   Alert ( "OP_BUYSTOP" , GetLastError ( )); }
   
if ( OrderMagicNumber( )== 2000 &&OrderSymbol()== Symbol ()) { 
 for ( i= OrdersTotal ();i> 0 ;i--){ Alert ( "i" , i); OrderSelect (i,SELECT_BY_POS );
if (OrderType( ) ==OP_SELLSTOP) { Y++;}}} Alert ( "Y" , Y);
 if (Y== 0 ){ 
   tikett= OrderSend ( Symbol (), OP_SELLSTOP,  volume*A, price -otstup* Point , Point * 3 ,R2, price-takeprofit* Point -otstup* Point , "OP_SELLSTOP" , 2000 ,  expiration, C'0,128,255' );
     Alert ( "OP_SELLSTOP" , GetLastError ( )); 
    }       
   
//----
   return ( 0 );
  }
//+-------------------------------------------
yardım diyor

Expression2 - döngü sonlandırma koşulunun kontrol edilmesi. Doğruysa, for döngüsü gövde ifadesi yürütülür.

vb. Her şeyi düzelttim ve hiçbir şey değişmedi.. Ayrıca i=OrdersTotal() yerine i=5 girmeye çalıştım, hiçbir şey değişmedi, döngü çalışmıyor.
 
Dimka-novitsek :
yardım diyor

Expression2 - döngü sonlandırma koşulunun kontrol edilmesi. Doğruysa, for döngüsü gövde ifadesi yürütülür.

vb. Her şeyi düzelttim ve hiçbir şey değişmedi.. Ayrıca i=OrdersTotal() yerine i=5 girmeye çalıştım, hiçbir şey değişmedi, döngü çalışmıyor.

doğru, döngü ulaşmıyor

 if (OrderSymbol()== Symbol ()&&OrderMagicNumber( )== 1000 ){
 for ( int i= OrdersTotal ();i> 0 ;i--){ Alert ( "i" , i);

yazmıştınız: "Düzenin sembolü (hangi düzenden? Birçoğu var ... veya hiç yok) mevcut olana eşitse ve büyüsü (birinin mi?) 1000'e eşitse, o zaman başlayın. döngü"

ancak gereklidir: "döngüyü çalıştırın. İçinde: 1) bir sıra seçin . 2) ve sembol =.. ve büyü =1000 ise, o zaman X++;"

 

Gerçek hesaplardaki bazı DC'ler, sembol adlarına "." gibi her türlü önek atar. veya "FXF".

Bu önekleri nasıl değiştirebilirim?

şöyle yaptım:

#define DEF_SPEC "FXF"

string SymbolsTrade[] = {"AUDCAD"DEF_SPEC ... - bu çalışmıyor

string SymbolsTrade[] = {"AUDCAD"+DEF_SPEC ... - ve bu da çalışmıyor

sonuç olarak, istenen AUDCADFXF yerine sadece FXF alıyorum.

Bana nasıl uygulanacağını söyleme?
 
pusheax :

Gerçek hesaplardaki bazı DC'ler, sembol adlarına "." gibi her türlü önek atar. veya "FXF".

Bu önekleri nasıl değiştirebilirim?

şöyle yaptım:

#define DEF_SPEC "FXF"

string SymbolsTrade[] = {"AUDCAD"DEF_SPEC ... - bu çalışmıyor

string SymbolsTrade[] = {"AUDCAD"+DEF_SPEC ... - ve bu da çalışmıyor

sonuç olarak, istenen AUDCADFXF yerine sadece FXF alıyorum.

Bana nasıl uygulanacağını söyleme?

Eh, "hemen" seçenek çalıştı:

 #define DEF_SPEC "FXF"
string SymbolsTrade[] = { "AUDCAD" , "EURUSD" };

int init()
{
   for ( int i = 0 ; i < ArraySize (SymbolsTrade); i++)
      SymbolsTrade[i] = SymbolsTrade[i] + DEF_SPEC;
 

Anladım, hemen yapacağım.

Ayrıca, durum çalışmıyor

 OrderSelect (i,SELECT_BY_POS );
if (OrderType( ) ==OP_SELLSTOP) { Y++;} Alert ( "Y" , Y);}
Neden: