コーディングの方法は? - ページ 164

 
MiniMe:
Ralphさん、ありがとうございます。しかし、スワップがなくなってしまうので、スワップ損益を注文の決済に含めたいのです。

しかし、最初のループは利益とスワップの両方を累積していますね?

私は、Equityの数値は、5pipsのオープンロットの意味と比較するためのもので、そうすれば、実際に損益分岐価格を計算する必要はないのではないかと考えていました。

 

こんにちは、Ralph

私は3つの変数を持っています。

OrdLots ;ロット単位で、オープンロットを表しますが、スワップはスキップされます。

Equity ;これは総利益損失で、これはスワップを含んでいます。

MinPro ; これは私のテイクプロフィットで、5ピップス+ブレークイーブンポイントです。

スワップをスキップしてしまうので、OrdLotsを使って利益/損失をpipsで見つけることはできません。

私は、Equityを使ってpipsの利益/損失を求めることができません。なぜなら、そのためには、使用されるロット数を知る必要がありますが、私のロット数の計算はスワップをスキップしてしまうからです。

どうにかして、OrdLotsとEquityの両方の関数を使って、何pips開いたか知る必要があります。

MT4で口座残高や 口座資本を関連付ける何かが準備されているかもしれませんが、私は何も見つけられませんでした。

あなたが提案した解決策は、スワップを考慮せずにピップでの利益/損失を見つけますが、私はすでにそのための関数を入れています...スワップありのブレークイーブンより5pips上で終了させたいのですが

 

時刻の比較とdoループ

こんにちは、皆さん。

私はMql4言語の経験が非常に浅いです。私はopenordertimeをInt変数と比較し、もしそれがある時間の長さであり、注文がまだ開いている場合、私はBreakeven状況または多分利益状況に達することを試みることができるように、許可されたオープンオーダーの量を増やしたいのですが、その後すべてのオープンオーダーを同時に閉じ、最大オーダーをそのもともと許可された最大値に設定します。誰かが私を助けるか、このようなことをすでに行っている他の投稿のコードを表示することができます。

私はこのコードを使っていますが、まるで機能していないようです。

// 注文が長時間開いている場合、注文を閉じて、収支を合わせようとする。

void TimeProtection()

{

int totalorders = OrdersTotal();

for(int i=totalorders-1;i>=0;i--)

{

OrderSelect(i, SELECT_BY_POS);

if ( OrderSymbol()==Symbol() )

{

prTime = OrderOpenTime();

prTime = prTime * CallTime;

if (prTime >= TimeCurrent())

{

MaxAllowable_Trades = MaxAllowable_Trades + 3;

flag = 1;

ブレーク

}

}

}

を返します。

}

ぜひともご協力をお願いします。

ありがとうございます。

 
MiniMe:
こんにちは、ラルフ

私は3つの変数を持っています。

OrdLots ;ロット単位で、オープンロットを表しますが、スワップはスキップされます。

Equity ;これは総利益損失で、これはスワップを含みます。

MinPro ; これは私のテイクプロフィットで、5ピップス+ブレークイーブンポイントです。

スワップをスキップしてしまうので、OrdLotsを使って利益/損失をpipsで見つけることはできません。

私は、Equityを使ってpipsの利益/損失を求めることができません。なぜなら、そのためには、使用されるロット数を知る必要がありますが、私のロット数の計算はスワップをスキップしてしまうからです。

どうにかして、OrdLotsとEquityの両方の関数を使って、何pips開いたか知る必要があります。

MT4で口座残高や口座資本を関連付ける何かが準備されているかもしれませんが、私は何も見つけられませんでした。

ありがとうございます。スワップを考慮せずにpipsで損益を求める方法ですが、すでにそのための関数を入れています.スワップありのブレークイーブンの5pips上で終了させたい

ああ...わかったかも...。ということは、最初のループでEquityNoSwapにスワップなしの利益も蓄積すれば、私の「if」文ではEquityではなく、それを使うことができるのですね。(?) なぜなら、その場合、テストは "ブレークイーブン+スワップ価格に対して5pipsの利益があるか?" となり、実際には "スワップを無視して5pipsの利益があるか?" と同じになるからだ。(ということになる(というか、まだ理解できていない)。

基本的に「profits+swap」は相対的な「breakeven」であり、したがって「profits」は相対的な「breakeven+swap」であり、「profits」は「OrdLot」に分散されます。全体として、あなたはまだ「breakeven」のために実際のpips価格を決定する必要がないのです。

 

最高のEAコーディングのアイデア

私は、このトレッドでいくつかの助けを得るために開始します。私は、添付のインジケータのコードを学習しています。このインジケータは非常に信頼できるもので、もし誰かがこのインジケータのEAを作ることができれば、それはほとんど聖杯のようなものです。

基本的な原理は以下の通りです。

1.open赤い矢印が表示されたときに位置を売っています。

2.白い矢印が現れたら買いポジションをオープンし、自動的にすべてのTH ESELLポジション/ポジションをクローズします。

3.任意の時間枠に適用されます。

4.noストップロス。

5.add順序機能。

回答お待ちしております。

//+------------------------------------------------------------------+

//| IINWMARROWS.mq4||をベースにしたものです。

//| EMA_CROSS.mq4に基づいています。

|| Copyright ?2006, MetaQuotes Software Corp.|

//| フォレックス・トレーディング・ソフトウェアフォレックス・トレーディング・プラットフォーム MetaTrader4

|| 最終更新者:Iin Zulkarnain

//+------------------------------------------------------------------+

#property copyright "Copyright ?2006, MetaQuotes Software Corp."(コピーライト:2006年、メタクォーツ・ソフトウェア社)。

#property link "http://www.metaquotes.net"

//----

#property indicator_chart_window(インジケーターチャートウィンドウ

#property indicator_buffers 2 (インジケーターバッファー2)

#property indicator_color1 ホワイト

#property indicator_color2 赤色

#property indicator_width1 2 (幅)

#property indicator_width2 2 (インジケータ幅2

//----

double CrossUp[];

double CrossDown[];

extern int FasterMode=3; /0=sma, 1=ema, 2=smma, 3=lwma

extern int FasterMA= 3;

extern int SlowerMode=3; //0=sma, 1=ema, 2=smma, 3=lwma

extern int SlowerMA= 3;

//+------------------------------------------------------------------+

//| カスタムインジケータ初期化関数

//+------------------------------------------------------------------+

int init()

{

//---- インジケータ

SetIndexStyle(0, DRAW_ARROW, EMPTY).SetIndexStyle(0)を設定します。

SetIndexArrow(0, 233);

SetIndexBuffer(0, CrossUp);

SetIndexStyle(1, DRAW_ARROW, EMPTY).を設定します。

SetIndexArrow(1, 234);

SetIndexBuffer(1, CrossDown);

//----

return(0);

}

//+------------------------------------------------------------------+

//| カスタムインジケータ初期化関数

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| カスタムインジケーターイテレーション関数

//+------------------------------------------------------------------+

int start()

{

int limit, i, counter;

double fasterMAnow, slowerMAnow, fasterMAprevious, slowerMAprevious, fasterMAafter, slowerMAafter;

double Range, AvgRange;

int counted_bars=IndicatorCounted();

//---- エラーの可能性をチェック

if(counted_bars<0) return(-1);

//---- 最後にカウントされたバーが再カウントされる

if(counted_bars>0) counted_bars--;

//----

limit=Bars-counted_bars;

for(i=0; i<=limit; i++)

{

counter=i;

Range=0;

AvgRange=0;

for(counter=i ;counter<=i+9;counter++)

{

AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]);

Range=AvgRange/10;

fastMAnow=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i);

fasterMAprevious=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i+1);

fasterMAafter=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i-1);

//----

slowerMAnow=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i);

slowerMAprevious=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i+1); //------- slowerMAprevious=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i+1);

slowerMAafter=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i-1);

if ((fasterMAnow > slowerMAnow) && (fasterMAprevious・slowerMAafter))

{

CrossUp=Low - Range*0.5;

}

else if ((fasterMAnow slowerMAprevious) && (fasterMAafter < slowerMAafter))

{

CrossDown=High+Range*0.5。

}

}

return(0);

}

//+------------------------------------------------------------------------------+ このスレッドは正しいコードの書き方を学ぶためのもので、私は以下のようなコードを学んでいます。

 

偉大で勇敢なコーダーたちへ

このEAに最大ポジションを追加することはできますか?

または1つのポジションのみを実行させることができますか?

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

ファイル:
reverse_1.mq4  16 kb
 

削除された投稿

 

オフトピック質問

オープンソースのプログラムからのデータスニッフィングが可能でしょうか?

彼らは、貧弱なプログラミング言語(Metastockに似ているが、より貧弱で、「前」関数が 使えない)を持っています。彼らは、独自の指標しか許可せず、データを独占しています(法律で)。私の指標をリアルタイム環境で実行するためのDLL拡張を書くことはできません。

プログラマーの皆さん、ご回答よろしくお願いします。

 

別ペアの新規注文について

こんにちは。

異なる通貨 ペアの注文を出す方法はありますか?

例えば、EAがEURUSDのチャートで動作していますが、USDJPYの注文を開きたいのです。

これは可能ですか?

よろしくお願いします。

 

OrderSend("USDJPY",OP_BUY,0.1,MarketInfo("USDJPY",MODE_ASK),10,0,0, "Com",0,0,CLR_NONE) を実行しました。