[アーカイブ!】どんなルーキーの質問でも、フォーラムを散らかさないように。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 2. - ページ 369

 
カラーMA オルロバ。
 
ありがとうございました。
 

取引機能については、まだよくわからないのですが、プログラミングについては少し知っています。

このようなアルゴリズムの実装は、皆様のお力をお借りできればと思います。

なら

空注文があれば

この注文が買い条件が発生したペアにある場合

売り注文の場合

仕舞う

買い注文を出す。

書くのを手伝ってくれ、疲れてきた。 たくさん読んだけど、まだ理解できない。

 
frxmax:

取引機能については、まだよくわからないのですが、プログラミングについては少し知っています。

皆さんの力を借りて、このようなアルゴリズムを実装することができれば良いと思います。

1. if (買い条件)

2. 未決済の注文がある場合

2.1. この注文が買い条件が発動されたペアにある場合。

2.2. 売り注文の場合

3.閉じる

4.買い注文を開く。

この文章を書くのを手伝ってくれ、疲れてきた。 たくさん読んだが、まだ理解できない。


1.購入の条件は?

2.端末の成行注文でループを作る

2.1 ループ(ポイント2)では、選択された注文が どのペアで開かれているかを確認し、それが正しいものであれば、次に ...

2.2. 選択された注文の種類を確認し、それがSellであれば ...

3.選択した注文を閉じる

買い注文の開始

それとも、完全にコードが必要なのでしょうか?これは助け舟ではなく、弱気の好材料です。しかし...それが動作しない場合 - 私は書き込みますが、問題はありません...

 

この問題については、「人それぞれ真実がある」のです。

以下は私のバージョンです。

if (LoCurent>LoPrevious && FtCurent>FtPrevious)
      {
       ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Bid-StopLoss*Point,Bid+TakeProfit*Point,"Buy",1111,0,Green);
       if(ticket>0)
          {
           if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
          }
         else Print("Error opening BUY order : ",GetLastError()); 
         return(0); 
      }
// условие ПРОДАЖИ 
   if(LoCurent<LoPrevious && FtCurent<FtPrevious)
       {
        ticket=OrderSend(Symbol(),OP_SELL,Lot,Bid,3,Ask+StopLoss*Point,Ask-TakeProfit*Point,"Sell",2222,0,Red);
        if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
           }
        else Print("Error opening SELL order : ",GetLastError()); 
        return(0); 
        }    
    return(0);
 // ЗАКРЫТИЕ СДЕЛОК
 for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&   // check for opened position 
         OrderSymbol()==Symbol())  // check for symbol
        {
         if(OrderType()==OP_BUY)   // long position is opened
           {
           if(LoCurent<LoPrevious || FtCurent<FtPrevious || LoCurent<-30 || LoPrevious<-30)
               {
                 OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
                 return(0); // exit
               }
           }else
               {
                 if(LoCurent>LoPrevious || FtCurent>FtPrevious || LoCurent>30 || LoPrevious>30)
                  {
                     OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position
                     return(0); // exit
                  }
                }
     }
        
     
 }
 

}

KONDORのバージョンはこちら

if(LoCurent<LoPrevious)
     if(CalculateOrders(Symbol(),OP_SELL)>0) Ord_Close(Symbol(),OP_SELL);
     if(total<1)
     Ticket(OP_BUY);          }

//-----------------------
int CalculateOrders(string simbol,int type)
  {
   int count=0;
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==simbol)
        {
         if(OrderType()==type)  count++;
        
        }
     }
     
 return(count);
  }

//---------------------

void Ord_Close(string simb,int type) {  double price;
   
   if(type==OP_BUY)  price=MarketInfo(simb, MODE_BID); else
   if(type==OP_SELL) price=MarketInfo(simb, MODE_ASK);

   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;
      if( OrderSymbol()!=simb || OrderMagicNumber()!=111) continue;
      //---- check order type 
      if(OrderType()==type)
        {  OrderClose(OrderTicket(),OrderLots(),price,3,White);   break;  }
        
        
     }   
     
     
 } 
//-----------------------------

int Ticket(int op){
      double pp = MarketInfo(Symbol(), MODE_POINT);
      double pBid = MarketInfo(Symbol(), MODE_BID);
      double pAsk = MarketInfo(Symbol(), MODE_ASK); 
      double open_price;
      double T;
      color col=NULL;
      int mn=0;
      
  if(op==0) {open_price=pAsk; col=Blue; T=pAsk+TakeProfit*pp;}
  if(op==1) {open_price=pBid; col=Red;  T=pBid-TakeProfit*pp;}
  int res=OrderSend(Symbol(),op,Lot,open_price,1,Bid-StopLoss*Point,Bid+TakeProfit*Point,NULL,mn,0,col); 

   return(res);               
 }
 

Expert Advisorは、注文を出す条件を満たした場合、価格変動のたびに取引を開始することに変わりはありません。

もう一つの問題は、逆シグナルでの決済注文(売りシグナルがあるときに買い注文をカバーすること、またその逆も同様)です。

 
frxmax:

Expert Advisorは、注文を出す条件を満たした場合、価格変動のたびに取引を開始することに変わりはありません。

また、逆シグナルでの決済注文(売りシグナルを受信したときに買い注文をカバーすること、またはその逆)にも問題があります。

これも一つの方法です。ToRを書く(SergeevとComposterが求めているように)。そして、動作するコードを取得します。実は、すべての問題を解決する方法があるのです。と、この掲示板に投稿されたのは一度や二度ではありません。
 

皆さん、こんにちは。FXの話は聞いたが、詳しくは聞いていない、C言語のプログラミングの基本は知っている。

収入を得られるようなFXロボットのプログラミングを学びたい。

これで本当に儲かるの?スタートアップに必要な最低限の条件とは?何を学べばいいのか?

 
Vinin:

もうひとつ方法があります。ToRを書く(SergeevとComposterに言われた通り)。そして、動作するコードを取得します。実は、すべての問題を解決する方法があるのです。と掲示板で何度も並べられた。
タスクのToRは、私が正しく理解しているか?
 
frxmax:

1.この場合でも、アドバイザーは注文を出す条件が満たされた場合、価格変動のたびに取引を開始します。

2.もう一つの問題は、逆シグナルでの決済注文(売りシグナルがあるときに買い注文をカバーすること、またその逆も同様)です。

前提条件

1.注文を出す条件がある場合(買い)、注文を出す条件がない場合(買い)、買い注文を出します。同様に、Sellについても

2.買い注文を出す条件があれば、売り注文を出す条件があれば、売り注文を閉じる。

こうして得られたのが

1.買いのシグナルがあれば→→→注文

2.売りの未決済注文がある場合 ->>.
2.1 閉じてください。

3.買いの注文がない場合 ->> 3.
3.1 開く

同様に、Sellについても