MAクロスコーディングを必要とする手
ページ 1 - 322 12 最終最終
Results 1 to 10 of 15

Thread: MAクロスコーディングを必要とする手

  1. #1
    私は熟練したアドバイザーをコーディングする方法を学びたいので、まず簡単なものを手に入れました。

    アイディアは、価格が下からMAを横切ったときにEAが長いポジションを開くことです。

    より、価格が戻ってきて、上からMAを横切って、長いポジションが閉められ、ショートが開かれる。

    アイデアはシンプルで、下のコードは正しいと思われますが、何も起こりません。

    誰かが私のミスがどこにあるのか教えてくれますか?




    extern double Lots = 0.01;
    extern intスリッパ= 7;
    extern string comment = MA_Template;
    extern int MagicNumber = 0;
    ///////////////////////////////////////////////////////////
    int ThisBarTrade = 0;
    int Position = 0;

    int init(){
    CalcPosition();
    }

    int start(){
    ダブルMA;


    ブールクローズ=偽;
    if(ThisBarTrade!= Bars){
    MA = iMA(NULL、0,5,0,0,0,0);

    //購入条件
    if(MA gt; = Bid Position lt; = 0){
    CalcPosition();
    if(Position lt; 0){
    if(CloseSingleSell()== false)return(0);/失敗しましたが、再試行することがあります
    }
    if(OpenSingleBuy()== false)return(0);/購入できませんが、もう一度やり直す可能性があります
    ThisBarTrade =バー;
    }
    //販売条件
    if(MA lt; = Ask Position gt; = 0){
    CalcPosition();
    if(Position gt; 0){
    if(CloseSingleBuy()== false)return(0);/失敗しましたが、再試行することがあります
    }
    if(OpenSingleSell()== false)return(0);/売りに失敗しましたが、もう一度試すことがあります
    ThisBarTrade =バー;
    }
    }
    }
    // ----------------------------------------------- -------------------

    void CalcPosition(){
    位置= 0;
    for(int i = 0; i lt; OrdersTotal(); i ){
    OrderSelect(i、SELECT_BY_POS、MODE_TRADES);
    if(OrderSymbol()== Symbol()){
    if(OrderType()== OP_BUY)Position = 1;
    if(OrderType()== OP_SELL)位置 - = 1;
    }
    }
    }

    bool CloseSingleBuy(){
    ブールクローズド;
    for(int i = 0; i lt; OrdersTotal(); i ){
    OrderSelect(i、SELECT_BY_POS、MODE_TRADES);
    if(Symbol()== OrderSymbol()MagicNumber == OrderMagicNumber()){
    if(OrderType()== OP_BUY){
    while(!IsTradeAllowed())スリープ(MathRand()/10);
    RefreshRates();
    クローズ= OrderClose(OrderTicket()、OrderLots()、Bid、Slippage、White);
    印刷(注文を閉じることを試みる# i 入札)。
    if(closed == -1){
    return(false);
    } else {
    return(true);
    }
    }
    }
    }
    return(false);
    }

    bool CloseSingleSell(){
    ブールクローズド;
    for(int i = 0; i lt; OrdersTotal(); i ){
    OrderSelect(i、SELECT_BY_POS、MODE_TRADES);
    if(Symbol()== OrderSymbol()MagicNumber == OrderMagicNumber()){
    if(OrderType()== OP_SELL){
    while(!IsTradeAllowed())スリープ(MathRand()/10);
    RefreshRates();
    クローズ= OrderClose(OrderTicket()、OrderLots()、Ask、Slippage、White);
    印刷(CloseSingleSell注文を試行する# i 質問);
    if(closed == -1){
    return(false);
    } else {
    return(true);
    }
    }
    }
    }
    return(false);
    }

    bool OpenSingleBuy(){
    if(Position!= 0)return(false);
    intチケット= -1;
    while(!IsTradeAllowed())スリープ(MathRand()/10);
    RefreshRates();
    チケット= OrderSend(Symbol()、OP_BUY、Lots、Ask、Slippage、0.0、0.0、comment buy、MagicNumber、0、Lime);
    if(チケットlt; 0){
    印刷(OpenSingleBuyに失敗した、エラー#、GetLastError());
    return(false);
    } else {
    印刷(OpenSingleBuyで正常に注文された);
    return(true);
    }
    return(false);
    }

    bool OpenSingleSell(){
    if(Position!= 0)return(false);
    intチケット= -1;
    while(!IsTradeAllowed())スリープ(MathRand()/10);
    RefreshRates();
    チケット= OrderSend(シンボル()、OP_SELL、ロット、ビッド、スリッパ、0.0、0.0、コメント 売り、MagicNumber、0、Lime);
    if(チケットlt; 0){
    印刷(OpenSingleSellに失敗した、エラー#、GetLastError());
    return(false);
    } else {
    印刷(OpenSingleSellで注文が正常に行われました)。
    return(true);
    }
    return(false);
    }

  2. #2
    私は何かをもっと簡単にしようとしていますが、まだ成功していません。目標は、1SMAと15SMAが同じ値(クロス)を持っていてもまだそれをやっていないときに、EAを買うことです。どんな助けでも本当に感謝します。/宣言double _Moving_Avarage;ダブル_Moving_Avarage_2; bool _Compare;ブール_buy; int start(){//レベル1 _Moving_Avarage = iMA(シンボル()、0,15,0,0,0,0); _Moving_Avarage_2 = iMA(シンボル()、0,1,0,0,0,0); _Compare = 0 == 0; (0)、0,0.1、MarketInfo(Symbol()、MODE_ASK)、100,200,0 ,, __ STRATEGY_MAGIC 0)gt; = 0;/Level 2 if(_Compare!__ isExist(0))_ buy = return(0); {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}){{ ;} return(false);} bool __isExist(int __magic){return(__ selectOrderByMagic(__ magic));}

  3. #3
    1)ほとんど同じ価値を持つことはありません。十字を検出するには、前のバーが遅い値を上回る高速値を探し、現在のバーが遅い値を下回る速い値を探します(短い項目の場合)。 2)そこには既存の例があります。それらを使用してください。

  4. #4

    Quote Originally Posted by ;
    1)ほとんど同じ価値を持つことはありません。十字を検出するには、前のバーが遅い値を上回る高速値を探し、現在のバーが遅い値を下回る速い値を探します(短い項目の場合)。 2)そこには既存の例があります。それらを使用してください。
    ちょっとRRは情報をありがとう。私の元の考えは、PRICEがSMAを横切る正確な瞬間を見つけることでした。バーで現在の価格をどのように定義するかわからないので、1SMAをプロキシとして使用しています。あなたが私に答える気にならないなら。なぜ我々は(視覚的に)画面上の十字を見るのですが、EAはそれを見ません。リアルタイムで見るものを多かれ少なかれエミュレートすることができる、私が定義できる価格帯はありますか?ありがとう

  5. #5
    EAが見ているのは数字の集合です。どのように視覚的パターンを数字のセットに変換しますか?

  6. #6
    コードタグを使用してコードを投稿すると、おそらくより多くの助けを得るでしょう。 エディタでフォーマットされていないので、コードを見ていません。しかし、ここにあなたができることの例があります:挿入されたコード#define CROSS_UP 1 #define CROSS_DOWN 2 int my_ticket; (1)、(2)、(3)、(4)、(5)、(4)、(5)、 if(ma_crossover(1)== CROSS_DOWN)my_ticket = OrderSend(Symbol()、OP_SELL、1、Bid、3、Bid-10 * Point、Ask 10 * Point); }/----------------------------------------------- -------------------/ma_crossover()//クロスオーバー時に1を返します。十字架に2を返します//------------------------------------------- ----------------------- int ma_crossover(int pos){double ma1_current、ma1_previous、ma2_current、ma2_previous; ma1_current = iMA(NULL、0,5,0、MODE_SMA、PRICE_CLOSE、pos); ma1_previous = iMA(NULL、0,5,0、MODE_SMA、PRICE_CLOSE、pos 1); ma2_current = iMA(NULL、0,21,0、MODE_SMA、PRICE_CLOSE、pos); ma2_previous = iMA(NULL、0,21,0、MODE_SMA、PRICE_CLOSE、pos 1);/(ma1_currentgt; ma1_previous ma2_currentlt; ma2_previous)return(CROSS_UP);/クロスダウンif(ma1_currentlt; ma1_previous ma2_currentgt; ma2_previous)return(CROSS_DOWN); return(0); }

  7. #7

    Quote Originally Posted by ;
    EAが見ているのは数字の集合です。どのように視覚的パターンを数字のセットに変換しますか?
    正確には、私がコードに苦労している理由です。私は、metatraderがMAを塗って別の値段を渡すと、その数が十字架の瞬間に同じでなければならないという印象を受けました。 iMAがX軸とY軸にペイントされる座標を送信し、バーが同時に価格の関数としてペイントされ、X、Y座標が頭のiMAとBidまたはAsk(またはiMAとiMAのMAクロスの場合)は、この正確な時点で同じ値を持つ必要があります。しかし、私はそれがこのように動作しないと思います。

  8. #8
    2つの異なるMAがまったく同じ値を持つことは非常にまれです。あなたは相対的なMAの動きをチェックします。

  9. #9

    Quote Originally Posted by ;
    コードタグを使用してコードを投稿すると、おそらくより多くの助けを得るでしょう。 エディタでフォーマットされていないので、コードを見ていません。しかし、ここにあなたができることの例があります:#define CROSS_UP 1 #define CROSS_DOWN 2 int my_ticket; (1)、(2)、(3)、(4)、(5)、(4)、(5)、 if(ma_crossover(1)== CROSS_DOWN)my_ticket = OrderSend(Symbol()、OP_SELL、1、Bid、3、Bid-10 * Point、Ask 10 * Point); }/----------------------------------------------- -------------------/...
    入力いただきありがとうございます。私がMA CROSSという言葉を言ったとき、私はスレッド全体を乱した。私の元々のポイントは、MAの価値を見いだすコードとBidまたはAskの価格をバーに描くことでした。 MAとバーがお互いに交差している正確なティックでトリガーされた注文よりも、私は2つのMAを使用し始めました.1つは上記の説明のプロキシとしてちょうど1に設定されました。なぜなら、どのコードがリアルタイムで価格を与えるのかわからないからです。

  10. #10

    Quote Originally Posted by ;
    2つの異なるMAがまったく同じ値を持つことは非常にまれです。あなたは相対的なMAの動きをチェックします。
    したがって、2 MAが交差するとき。 metatraderはどのようにピクセルを画面に描きますか?色などの番号を持つピクセルが描画されるときに生成されます。同じ座標X、Y(数字)が生成されます。数字は特定の時間に一致する必要があります。そうでなければ、MAは決して交差しません。右?

投稿権限

  • Youma新しいスレッドを投稿しない
  • Youmaは返信しない
  • あなたは添付ファイルを投稿しないかもしれない
  • Youma Notedityourposts
  •  
  • スマイリーはオンです
  • スマイリーはオンです
  • [IMG]コードがオンです
  • [VIDEO]コードがオンです
  • HTMLコードがオフです
This website uses cookies
We use cookies to store session information to facilitate remembering your login information, to allow you to save website preferences, to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners.