[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 67

 

みなさん、こんにちは。

私は作家になることを決意しました。MQL4 で何か書きたいと思い、何かで読んでExpert Advisorを書くことにしました。RSI with period 8が70を越えたらポジションをオープンし、 が30を越えたらポジションをクローズし、それ以外何も起こらないというものです。書きました。以下はそのコードです。

//+------------------------------------------------------------------+
//| 4doc.mq4
//| アレックス
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright"アレックス"
#プロパティリンク "http://www.metaquotes.net"

//---- 入力パラメータ
extern int PerRSI=8;
extern int intNamber=77771;

extern double Lots=1.0;

/+------------------------------------------------------------------+
//| エキスパートスタート機能
//+------------------------------------------------------------------+
int start()
{
イント
cnt=0とする。
のチケットを購入します。
の合計です。
二重
rsi_0, //値です。rsi_0電流
rsi_1; // 値。rsi_1 1本目
if (Bars<100)
{
Print("bars less than 100");
return(0)です。
}
rsi_0=iRSI(NULL,0, PerRSI,0,0); // 現在のバー
rsi_1=iRSI(NULL,0, PerRSI,0,1); // 現在のバー+1
total=OrdersTotal()。
if(total<1)
if(rsi_0 < rsi_1 && rsi_0 > 70) // ラインが70を超えたら
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0, "My RSI", MagicNamber,0,Green)を実行。
if(チケット>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("SELL order opened : ",OrderOpenPrice())
}
else Print("Error opening SELL order : ",GetLastError());
return(0)です。
}
for(cnt=0;cnt<total;cnt++)
{
RefreshRates()。
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // これはオープンポジションですか?OP_BUYまたはOP_SELL
OrderSymbol()==Symbol()) // ツールマッチ?
{
if(OrderType()==OP_SELL) // ポジションはオープンです。
{
if(rsi_0 > rsi_1 && rsi_0 < 30) // ラインが30を超えたら
{
オーダークローズ(オーダーチケット(),オーダーロット(),アスク,3,バイオレット); // クローズポジション
return(0); // 終了

}}}}}

テストしてみましたが、ほぼ 思ったとおりに動きます。SSI - 14 がレベル100を超えたらポジションをオープンし、 がレベル100を超えたらポジションを クローズするようにコードを変更することにした。RSI のコードをCCI に変更しましたので、ご紹介します。

//+------------------------------------------------------------------+
//| CCI-DOC.mq4について
//| アレックス
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "アレックス"
#プロパティリンク "http://www.metaquotes.net"

//---- 入力パラメータ
extern int PerCCI=14;
extern inttern MagicNamber=88881;

extern double Lots=1.0;

//+------------------------------------------------------------------+
//| エキスパートスタート機能
//+------------------------------------------------------------------+
int start()
{
イント
cnt=0とする。
のチケットを購入します。
の合計です。
二重
cci_0, // cci_0 の値。cci_0電流
cci_1; // cci_1 の値。cci_1 1st bar
if (Bars<100)
{
Print("bars less than 100");
return(0)です。
}
cci_0=iRSI(NULL,0, PerCCI,0,0); // 現在のバー
cci_1=iRSI(NULL,0, PerCCI,0,1); // 現在のバー+1
total=OrdersTotal()。
if(total<1)
if(cci_0 < cci_1 && cci_0 > 100) // if(line has crossed 100)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0, "My CCI", MagicNamber,0,Green)。
if(チケット>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("SELL order opened : ",OrderOpenPrice())
}
else Print("Error opening SELL order : ",GetLastError());
return(0)です。
}
for(cnt=0;cnt<total;cnt++)
{

OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES)です。
if(OrderType()<=OP_SELL && // これはオープンポジションですか?OP_BUYまたはOP_SELL
OrderSymbol()==Symbol()) // ツールマッチ?
{
if(OrderType()==OP_SELL) // ポジションはオープンです。
{
if(cci_0 > cci_1 && cci_0 < -100) // 線が-100を超えたら
{
オーダークローズ(オーダーチケット(),オーダーロット(),アスク,3,バイオレット); // クローズポジション
return(0); // 終了
}}}}}

CCIを テストし始めた ...... まあ、何も起こりません、売ったり買ったりしない、ログにエラーがない、テストの終わりに曲線チャートを開きますが、それはCCIではなく、期間14とRSI 70から30です.......もしかしたら、経験豊富なライターの誰かが理解して、その理由と修正方法を教えてくれるかもしれません。

 
pepsi писал(а)>>
それから、ログのデモでは、すべてがより明確に示されています。どこを見ればエラーが出るのかが明確になった。自分一人で...

>> ありがとうございました

 

またまたこんにちは!!!!!!!!!!

p.の質問について、/non-intrusively/;-)) 思い出していただきたいのです。64 MA の取引条件について...お先に失礼します

 

皆さん、ターミナルで同じ取引商品の複数の異なるタイムチャートを使用する場合、教えてください。

トラフィックはどのように消費されるのですか?最小限の時間枠のトラフィックを消費するのか、それともすべての時間枠のトラフィックを消費するのか?

 
igrok2008 >> :

またまたこんにちは!!!!!!!!!!

p.の質問について、/non-intrusively/;-)) 思い出していただきたいのです。64 MA の取引条件について...お先に失礼します

int start()
  {
//----
    double MA_0=iMA(NULL, 0, pMA, pSh, mode, price,0);
    double MA_1=iMA(NULL, 0, pMA, pSh, mode, price,1);

    перед использованием в коде open_1 или  open_0 их нужно инициализировать, т. е. объяснить программе
    к виду каких данных эти опены относятся( целые, дробные, строчные, логические)

    double open_0=Open[0]; //  double - дробное число. 0 и 1 это номера ячееек,
    double open_1=Open[1]; // которые в данном случае являются номерами баров
        
    if( MA_1< Open[1] && MA_0>Open[0])
     if( CheckOrders(OP_SELL))//продажа
      {
       if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, NULL, MagicNumber))
         Print("Не открыт ордер Buy. Ошибка №", GetLastError()); 
       }
       
    if( MA_1>Open[1] && MA_0<Open[0])
     if( CheckOrders(OP_BUY))//покупка
      {
       if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, NULL, MagicNumber))
         Print("Не открыт ордер Sell. Ошибка №", GetLastError()); 
       }
//----
   return(0);
  }
 
KONDOR >> :

返信ありがとうございます!!!

1.ダブルオープン_0とダブル_1の2行は、ダブルMAの行の前に書く必要があるのか、それとも無批判なのか、はっきりさせてください......。

2.取引条件のopen[0,1]をopen_0,1に置き換えると............?

 
igrok2008 >> :

返信ありがとうございます!!!

1.ダブルオープン_0とダブル_1の2行は、ダブルMAの行の前に書く必要があるのか、それとも無批判なのか、はっきりさせてください......。

2.open[0,1]をopen_0,1に置き換えると............?

1.重要でない。

2.できる

 

助けてください...私は怠惰かもしれませんが、デモや実際の口座で取引するためにプログラムを 接続する方法がわかりません......どこをどう書けばいいのか、どこをどう歌えばいいのか、お願いだから説明してください...。よろしくお願いします!))

 
私は書いた - 私は書いた、私はテスターで取引されたが、デモや実に彼らはそこにあるはずですが、取引を行うにはしたくない、と一般的には、信号がありません(((()。
 
keekkenen >> :

1. クリティカルではない

2.できる

CGFCB<J すなわちTHANK YOU!!!!