if ( KOL_BUY == 0 && KOL_SELL != 0 ) { open(0,Lot,0,TP)です。 l = last_trade(1); open(1,l,0,0)です。 modify_orders(1); }
if ( KOL_BUY != 0 && KOL_SELL == 0 ) { open(1,Lot,0,TP)です。 l = last_trade(0); open(0,l,0,0)です。 modify_orders(0); }
return(0)です。 }
文字列情報() { int i; double buff_1 = 0, buff_2 = 0, buff_3 = 0; 文字列 res = "ⅷ";
for( i = OrdersHistoryTotal() - 1; i >= 0; i-- ) { OrderSelect(i,SELECT_BY_POS,MODE_HISTORY); if( オーダーマジック番号() == ID ) { if ( OrderOpenTime() >= iTime(NULL,PERIOD_D1,0) )buff_1 += OrderProfit(); if ( OrderOpenTime() >= iTime(NULL,PERIOD_D1,1) && OrderOpenTime() < iTime(NULL,PERIOD_D1,0) )buff_2 += OrderProfit().PERIOD_D1,0); if ( OrderOpenTime() >= GlobalVariableGet(GLOB_START) )buff_3 += OrderProfit(); } }
res = res + "入金通貨での利益" + TimeToStr(iTime(NULL,PERIOD_D1,0)) + ": " + DoubleToStr(buff_1,0) + "\n" + "\n "となる。 res = res + "入金通貨での利益" + TimeToStr(iTime(NULL,PERIOD_D1,1)) + ": " + DoubleToStr(buff_2,0) + "\n" + "\n" です。 res = res + "預金通貨の利益合計:" + DoubleToStr(buff_3,0) + "\n"; return(res)です。 }
void modify_orders( int type ) { int i; datetime time_last = 0, time_first = TimeCurrent(); double SPREAD = MarketInfo(Symbol(),MODE_SPREAD)*MarketInfo(Symbol(),MODE_POINT), op_pr_last, op_pr_first, level.を使用します。
for( i = OrdersTotal() - 1; i >= 0; i-- ) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if( OrderMagicNumber() == ID && OrderType() == type ) { if ( OrderOpenTime() > time_last ) { op_pr_last = OrderOpenPrice(); time_last = OrderOpenTime(); } if ( OrderOpenTime() < time_first ) { op_pr_first = OrderOpenPrice(); time_first = OrderOpenTime(); } } }
if ( type == 0 )level = op_pr_last + MathAbs(op_pr_last-op_pr_first) * (SL/100); if ( type == 1 )level = op_pr_last - MathAbs(op_pr_last-op_pr_first) * (SL/100);
for( i = OrdersTotal() - 1; i >= 0; i -- ) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if( OrderMagicNumber() == ID && OrderType() == type && NormalizeDouble(OrderTakeProfit(),Digits) != NormalizeDouble(level,Digits) )オーダーモディファイ(OrderTicket()、OrderOpenPrice()、OrderStopLoss()、レベル、0)) } }
double last_trade( int t ) { int i; double res = -1; datetime time=0;
for(i=OrdersTotal()-1;i>=0;i--) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderOpenTime()>time && OrderMagicNumber()==ID && OrderType() == t) { res = OrderLots(); time = OrderOpenTime(); } } if ( multiplier )return(res * Lot_koeff); if ( !multiplier )return(res + Lot_koeff); } int open(int type, double l, double sl=0, double tp=0, string comm = "") { int isOpened = 0, try = 0; 二重のs,t。 while ( IsTradeContextBusy() ){Sleep(500);}。 RefreshRates()。 if ( sl != 0 && sl < MarketInfo(Symbol(),MODE_STOPLEVEL) )sl = MarketInfo(Symbol(),MODE_STOPLEVEL); if ( tp != 0 && tp < MarketInfo(Symbol(),MODE_STOPLEVEL) )tp = MarketInfo(Symbol(),MODE_STOPLEVEL).Tp ( tp != 0 && tp < MarketInfo(Symbol(),MODE_STOPLEVEL)); if ( type == 0 ) { if ( tp == 0 )t = 0; if ( tp != 0 )t = Ask + tp * Point; if ( sl == 0 )s = 0; if ( sl != 0 )s = Bid - sl * Point; } if ( type == 1 ) { if ( tp == 0 )t = 0; if ( tp != 0 )t = Bid - tp * Point; if ( sl == 0 )s = 0; if ( sl != 0 )s = Ask + sl * Point; } s = NormalizeDouble(s,Digits)とする。 t = NormalizeDouble(t,Digits)とする。 if(type==0)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Ask,Digits),10,s,t,comm,ID)。 if(type==1)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Bid,Digits),10,s,t,comm,ID)。 Sleep(500)です。 while(isOpened<0) { while ( IsTradeContextBusy() ){Sleep(500);}。 RefreshRates()。 if ( type == 0 ) { if ( tp == 0 )t = 0; if ( tp != 0 )t = Bid + tp * Point; if ( sl == 0 )s = 0; if ( sl != 0 )s = Bid - sl * Point; } if ( type == 1 ) { if ( tp == 0 )t = 0; if ( tp != 0 )t = Ask - tp * Point; if ( sl == 0 )s = 0; if ( sl != 0 )s = Ask + sl * Point; } s = NormalizeDouble(s,Digits)とする。 t = NormalizeDouble(t,Digits)とする。 try++です。 if(type==0)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Ask,Digits),10,s,t,comm,ID)。 if(type==1)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Bid,Digits),10,s,t,comm,ID)。 if(try > 5) break; if(isOpened>=0)break。 Sleep(500)です。 } if(isOpened<0) Alert("Order not opened, error :", GetLastError()); return(isOpened)とする。 }
int order_total( int type_1 = -1, int type_2 = -1 ) { int i; int kol=0; for(i=OrdersTotal()-1;i>=0;i--) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderMagicNumber()==ID && (OrderType() == type_1 || OrderType() == type_2)))コル++。 if(OrderMagicNumber()==ID && type_1 == -1 && type_2 == -1 )kol++; } return(kol)です。 }
double check_lot(double &lo) { double l = MarketInfo(Symbol(),MODE_LOTSTEP)。 int ok = 0; while ( l < 1 ){l*=10;ok++;}。 if( lo < MarketInfo(Symbol(),MODE_MINLOT) )lo = MarketInfo(Symbol(),MODE_MINLOT)とする。 if( lo > MarketInfo(Symbol(),MODE_MAXLOT) )lo = MarketInfo(Symbol(),MODE_MAXLOT); return(NormalizeDouble(lo,ok))とする。
プログラマーの皆さん、こんにちは。
チュートリアルを調べるのが億劫です。エキスパートアドバイザーで、0.1ではなく0.01ステップでマネーマネジメントを適用するために、何を変更すべきかをご存知でしょうか。
プログラマーの皆さん、こんにちは。
チュートリアルを調べるのが億劫です。エキスパートアドバイザーで、0.1ではなく0.01でマネーマネジメントを適用するように変更する必要があることをご存知でしょうか。
みんな怠けてる
誰もが怠け者
言語を知っているプログラマーが、プログラムを開くのが億劫になるのも一興だ。言葉を知らない人が、本質的に簡単な質問に答えるために、言葉を覚えるのが億劫になるのは、また別の話です。言語を知ることがプログラマーにとって必要なことであるならば、私がそこに飛び込む意味はないのです :)以上です。でも、もちろん、誰も答えてくれなければ、私が答えるしかありません。しかし、プログラマーだけがここでコミュニケーションするのでは、このフォーラムの意味がありません。
言語を知っているプログラマーが、プログラムを開くのが億劫になるのは、一つの問題です。言葉を知らない人が、本質的に簡単な質問に答えるために、言葉を覚えるのが億劫になるのは、また別の話です。言語を知ることがプログラマーにとって必要なことであるならば、私がそこに飛び込む意味はないのです :)以上です。でも、もちろん、誰も答えてくれなければ、私が答えるしかありません。しかし、プログラマーだけがここでコミュニケーションするのでは、このフォーラムの意味がありません。
意味がない場合 - 質問をせず、直接こちらへ。
意味がわからなければ、質問せず、そのままここに来て ください
ありがとうございます。
プログラマーの皆さん、こんにちは。
チュートリアルを調べるのが億劫です。エキスパートアドバイザーで、0.1ではなく0.01ステップでマネーマネジメントを適用するために、何を変更すべきかをご存知でしょうか。
2桁を変更し、正常に動作するか確認しました。
フォーラム全体を既読にするオプションはありますか?
あと、MQL5のフォーラムも...。
ありがとうございました。
を2桁変更し、正常に動作するか確認してください。
怠けていない人がいることがわかった。間違えました。
皆さん、的確なアドバイスをありがとうございました。でも、まだ始めたことが全然進んでないんです))私のEAは2つの同じ注文を開き、残りは動きに反している、私は動きで開くように変更したい!!。すべてのバリエーションを試しました。
ができる人を教えてください 。
文字列 GLOB_START;
int init()
{
GLOB_START = "@" + DoubleToStr(ID,0) + "@" + "_start";
if !GlobalVariableCheck( GLOB_START )GlobalVariableSet(GLOB_START,TimeCurrent()).GlobalVariableSet( GLOB_START,TimeCurrent());
return(0)です。
}
int deinit()
{
switch( UninitializeReason() )
{
caseREASON_REMOVE: delete_glob ("@" + DoubleToStr(ID,0) + "@" );
}
if ( IsTesting() )delete_glob ("@" + DoubleToStr(ID,0) + "@" );
return(0)です。
}
void delete_glob ( string c )
{
int i;
for ( i = GlobalVariablesTotal()-1; i>= 0 ; i-- )if ( StringFind(GlobalVariableName(i),c) >= 0 )GlobalVariableDel(GlobalVariableName(i)).
}
int start()
{
コメント(Info())です。
int KOL_BUY = order_total(0);
int KOL_SELL = order_total(1);
ダブルエル
if ( order_total() == 0 ) )
{
open(0,Lot,0,TP)です。
open(1,Lot,0,TP)です。
}
if ( KOL_BUY == 0 && KOL_SELL != 0 )
{
open(0,Lot,0,TP)です。
l = last_trade(1);
open(1,l,0,0)です。
modify_orders(1);
}
if ( KOL_BUY != 0 && KOL_SELL == 0 )
{
open(1,Lot,0,TP)です。
l = last_trade(0);
open(0,l,0,0)です。
modify_orders(0);
}
return(0)です。
}
文字列情報()
{
int i;
double buff_1 = 0, buff_2 = 0, buff_3 = 0;
文字列 res = "ⅷ";
for( i = OrdersHistoryTotal() - 1; i >= 0; i-- )
{
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if( オーダーマジック番号() == ID )
{
if ( OrderOpenTime() >= iTime(NULL,PERIOD_D1,0) )buff_1 += OrderProfit();
if ( OrderOpenTime() >= iTime(NULL,PERIOD_D1,1) && OrderOpenTime() < iTime(NULL,PERIOD_D1,0) )buff_2 += OrderProfit().PERIOD_D1,0);
if ( OrderOpenTime() >= GlobalVariableGet(GLOB_START) )buff_3 += OrderProfit();
}
}
res = res + "入金通貨での利益" + TimeToStr(iTime(NULL,PERIOD_D1,0)) + ": " + DoubleToStr(buff_1,0) + "\n" + "\n "となる。
res = res + "入金通貨での利益" + TimeToStr(iTime(NULL,PERIOD_D1,1)) + ": " + DoubleToStr(buff_2,0) + "\n" + "\n" です。
res = res + "預金通貨の利益合計:" + DoubleToStr(buff_3,0) + "\n";
return(res)です。
}
void modify_orders( int type )
{
int i;
datetime time_last = 0, time_first = TimeCurrent();
double SPREAD = MarketInfo(Symbol(),MODE_SPREAD)*MarketInfo(Symbol(),MODE_POINT), op_pr_last, op_pr_first, level.を使用します。
for( i = OrdersTotal() - 1; i >= 0; i-- )
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if( OrderMagicNumber() == ID && OrderType() == type )
{
if ( OrderOpenTime() > time_last )
{
op_pr_last = OrderOpenPrice();
time_last = OrderOpenTime();
}
if ( OrderOpenTime() < time_first )
{
op_pr_first = OrderOpenPrice();
time_first = OrderOpenTime();
}
}
}
if ( type == 0 )level = op_pr_last + MathAbs(op_pr_last-op_pr_first) * (SL/100);
if ( type == 1 )level = op_pr_last - MathAbs(op_pr_last-op_pr_first) * (SL/100);
for( i = OrdersTotal() - 1; i >= 0; i -- )
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if( OrderMagicNumber() == ID && OrderType() == type && NormalizeDouble(OrderTakeProfit(),Digits) != NormalizeDouble(level,Digits) )オーダーモディファイ(OrderTicket()、OrderOpenPrice()、OrderStopLoss()、レベル、0))
}
}
double last_trade( int t )
{
int i;
double res = -1;
datetime time=0;
for(i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderOpenTime()>time && OrderMagicNumber()==ID && OrderType() == t)
{
res = OrderLots();
time = OrderOpenTime();
}
}
if ( multiplier )return(res * Lot_koeff);
if ( !multiplier )return(res + Lot_koeff);
}
int open(int type, double l, double sl=0, double tp=0, string comm = "")
{
int isOpened = 0, try = 0;
二重のs,t。
while ( IsTradeContextBusy() ){Sleep(500);}。
RefreshRates()。
if ( sl != 0 && sl < MarketInfo(Symbol(),MODE_STOPLEVEL) )sl = MarketInfo(Symbol(),MODE_STOPLEVEL);
if ( tp != 0 && tp < MarketInfo(Symbol(),MODE_STOPLEVEL) )tp = MarketInfo(Symbol(),MODE_STOPLEVEL).Tp ( tp != 0 && tp < MarketInfo(Symbol(),MODE_STOPLEVEL));
if ( type == 0 )
{
if ( tp == 0 )t = 0;
if ( tp != 0 )t = Ask + tp * Point;
if ( sl == 0 )s = 0;
if ( sl != 0 )s = Bid - sl * Point;
}
if ( type == 1 )
{
if ( tp == 0 )t = 0;
if ( tp != 0 )t = Bid - tp * Point;
if ( sl == 0 )s = 0;
if ( sl != 0 )s = Ask + sl * Point;
}
s = NormalizeDouble(s,Digits)とする。
t = NormalizeDouble(t,Digits)とする。
if(type==0)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Ask,Digits),10,s,t,comm,ID)。
if(type==1)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Bid,Digits),10,s,t,comm,ID)。
Sleep(500)です。
while(isOpened<0)
{
while ( IsTradeContextBusy() ){Sleep(500);}。
RefreshRates()。
if ( type == 0 )
{
if ( tp == 0 )t = 0;
if ( tp != 0 )t = Bid + tp * Point;
if ( sl == 0 )s = 0;
if ( sl != 0 )s = Bid - sl * Point;
}
if ( type == 1 )
{
if ( tp == 0 )t = 0;
if ( tp != 0 )t = Ask - tp * Point;
if ( sl == 0 )s = 0;
if ( sl != 0 )s = Ask + sl * Point;
}
s = NormalizeDouble(s,Digits)とする。
t = NormalizeDouble(t,Digits)とする。
try++です。
if(type==0)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Ask,Digits),10,s,t,comm,ID)。
if(type==1)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Bid,Digits),10,s,t,comm,ID)。
if(try > 5) break;
if(isOpened>=0)break。
Sleep(500)です。
}
if(isOpened<0) Alert("Order not opened, error :", GetLastError());
return(isOpened)とする。
}
int order_total( int type_1 = -1, int type_2 = -1 )
{
int i;
int kol=0;
for(i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()==ID && (OrderType() == type_1 || OrderType() == type_2)))コル++。
if(OrderMagicNumber()==ID && type_1 == -1 && type_2 == -1 )kol++;
}
return(kol)です。
}
double check_lot(double &lo)
{
double l = MarketInfo(Symbol(),MODE_LOTSTEP)。
int ok = 0;
while ( l < 1 ){l*=10;ok++;}。
if( lo < MarketInfo(Symbol(),MODE_MINLOT) )lo = MarketInfo(Symbol(),MODE_MINLOT)とする。
if( lo > MarketInfo(Symbol(),MODE_MAXLOT) )lo = MarketInfo(Symbol(),MODE_MAXLOT);
return(NormalizeDouble(lo,ok))とする。
次のことを提案することができます、アカウントにN個のEAがあり、特定の条件の下ですべての注文を同時に開く ことができ、それらの各々は、アカウントに1以上の注文をチェックしますが、時々私はN個の注文で終わる、私は何をすることができますか?