before buying or selling, how to check if i have that pair already open position ?
before buying or selling, how to check if i have that pair already open position ?
27 Mar 2017, 08:44
before buying or selling, how to check if i have that pair already open position ?
what code chould i write ?
Replies
201058436
27 Mar 2017, 11:09
RE: Hi Handi
AthenasGuidance said:
//Changed spelling mistake.
I'm new to programming, so please take this with a grain of salt:
//Check To See If Any Pending Orders Are Open var TotalOrders = Position.Count; { //Check if TotalOrders (any position) is open, if so, do not go to next line if (TotalOrders = null) //next line ExecuteMarketOrder() }Hope it helps.
@201058436
handiphangceo@gmail.com
27 Mar 2017, 12:21
hellow, can you check is this correct..
protected override void OnBar()
{
var positionsBuy = Positions.FindAll("Buy");
var positionsSell = Positions.FindAll("Sell");
var distanceFromUpKumo = (Symbol.Bid - ichimoku.SenkouSpanA.Last(26)) / Symbol.PipSize;
var distanceFromDownKumo = (ichimoku.SenkouSpanA.Last(26) - Symbol.Ask) / Symbol.PipSize;
if (MarketSeries.Open.Last(1) <= ichimoku.SenkouSpanA.Last(27) && MarketSeries.Open.Last(1) > ichimoku.SenkouSpanB.Last(27))
{
if (MarketSeries.Close.Last(1) > ichimoku.SenkouSpanA.Last(27))
{
if (distanceFromUpKumo <= 25)
{
//but if i put this way, i can only have 1 opened position at one momment, am i right ?
if (position.TradeType != TradeType.Buy && TradeType.Sell)
{
ExecuteMarketOrder(TradeType.Buy, Symbol, Volume, "Buy", StopLossPips, TakeProfitPips);
}
}
}
}
@handiphangceo@gmail.com
handiphangceo@gmail.com
27 Mar 2017, 13:43
if (position.SymbolCode == Symbol.Code && positionsBuy.Length == 0 && positionsSell.Length == 0)
if i put this way it cannot execute buy/sell ^^''
@handiphangceo@gmail.com
handiphangceo@gmail.com
27 Mar 2017, 13:45
RE: Hi Handi
AthenasGuidance said:
I new to programming, so please take this with a grain of salt:
//Check To See If Any Pending Orders Are Open var TotalOrders = Position.Count; { //Check if TotalOrders (any position) is open, if so, do not go to next line if (TotalOrders = null) //next line ExecuteMarketOrder() }Hope it helps.
thanks for replying :)
@handiphangceo@gmail.com
201058436
27 Mar 2017, 13:55
RE:
handiphangceo@gmail.com said:
hellow, can you check is this correct..
protected override void OnBar()
{
var positionsBuy = Positions.FindAll("Buy");
var positionsSell = Positions.FindAll("Sell");
var distanceFromUpKumo = (Symbol.Bid - ichimoku.SenkouSpanA.Last(26)) / Symbol.PipSize;
var distanceFromDownKumo = (ichimoku.SenkouSpanA.Last(26) - Symbol.Ask) / Symbol.PipSize;
if (MarketSeries.Open.Last(1) <= ichimoku.SenkouSpanA.Last(27) && MarketSeries.Open.Last(1) > ichimoku.SenkouSpanB.Last(27))
{
if (MarketSeries.Close.Last(1) > ichimoku.SenkouSpanA.Last(27))
{
if (distanceFromUpKumo <= 25)
{//but if i put this way, i can only have 1 opened position at one momment, am i right ?
if (position.TradeType != TradeType.Buy && TradeType.Sell)
{
ExecuteMarketOrder(TradeType.Buy, Symbol, Volume, "Buy", StopLossPips, TakeProfitPips);}
}
}
}
Hi Handi
I'm sorry I don't think that is correct ..however, I could be wrong.
If the previous code did not work, try the one below, the previous one was written not copied and pasted:
using System; using System.Linq; using cAlgo.API; using cAlgo.API.Indicators; using cAlgo.API.Internals; using cAlgo.API.Requests; using cAlgo.Indicators; namespace cAlgo.Robots { [Robot(TimeZone = TimeZones.CentralStandardTime, AccessRights = AccessRights.None)] public class BigBarRobot : Robot { [Parameter("Volume:", DefaultValue = 1, MinValue = 1, Step = 1)] public int Volume { get; set; } [Parameter("StopLossPips:", DefaultValue = 10, MinValue = 1, Step = 0.5)] public double StopLossPips { get; set; } [Parameter("TakeProfitPips:", DefaultValue = 20, MinValue = 1, Step = 0.5)] public double TakeProfitPips { get; set; } protected override void OnBar() { //Search All Positions Open And Label That Search "TotalPositions" var TotalPositions = Positions.Count; { //If The Search Labeled "TotalPositions" Reports That No Position Is Open (Null or Less Than 1 or zero), Then, ExecuteMarketOrder if (TotalPositions < 1) ExecuteMarketOrder(TradeType.Buy, Symbol, Volume, "Buy", StopLossPips, TakeProfitPips); } } } }
Enjoy.
@201058436
201058436
27 Mar 2017, 14:04
RE: RE:
AthenasGuidance said:
handiphangceo@gmail.com said:
hellow, can you check is this correct..
protected override void OnBar()
{
var positionsBuy = Positions.FindAll("Buy");
var positionsSell = Positions.FindAll("Sell");
var distanceFromUpKumo = (Symbol.Bid - ichimoku.SenkouSpanA.Last(26)) / Symbol.PipSize;
var distanceFromDownKumo = (ichimoku.SenkouSpanA.Last(26) - Symbol.Ask) / Symbol.PipSize;
if (MarketSeries.Open.Last(1) <= ichimoku.SenkouSpanA.Last(27) && MarketSeries.Open.Last(1) > ichimoku.SenkouSpanB.Last(27))
{
if (MarketSeries.Close.Last(1) > ichimoku.SenkouSpanA.Last(27))
{
if (distanceFromUpKumo <= 25)
{//but if i put this way, i can only have 1 opened position at one momment, am i right ?
if (position.TradeType != TradeType.Buy && TradeType.Sell)
{
ExecuteMarketOrder(TradeType.Buy, Symbol, Volume, "Buy", StopLossPips, TakeProfitPips);}
}
}
}
Hi Handi
I'm sorry I don't think that is correct ..however, I could be wrong.
If the previous code did not work, try the one below, the previous one was written not copied and pasted:
using System; using System.Linq; using cAlgo.API; using cAlgo.API.Indicators; using cAlgo.API.Internals; using cAlgo.API.Requests; using cAlgo.Indicators; namespace cAlgo.Robots { [Robot(TimeZone = TimeZones.CentralStandardTime, AccessRights = AccessRights.None)] public class BigBarRobot : Robot { [Parameter("Volume:", DefaultValue = 1, MinValue = 1, Step = 1)] public int Volume { get; set; } [Parameter("StopLossPips:", DefaultValue = 10, MinValue = 1, Step = 0.5)] public double StopLossPips { get; set; } [Parameter("TakeProfitPips:", DefaultValue = 20, MinValue = 1, Step = 0.5)] public double TakeProfitPips { get; set; } protected override void OnBar() { //Search All Positions Open And Label That Search "TotalPositions" var TotalPositions = Positions.Count; { //If The Search Labeled "TotalPositions" Reports That No Position Is Open (Null or Less Than 1 or zero), Then, ExecuteMarketOrder if (TotalPositions < 1) ExecuteMarketOrder(TradeType.Buy, Symbol, Volume, "Buy", StopLossPips, TakeProfitPips); } } } }Enjoy.
..Now I only wish someone would help me with my coding problem.. "/forum/cbot-support/11404".
@201058436
handiphangceo@gmail.com
27 Mar 2017, 14:33
RE: RE:
AthenasGuidance said:
handiphangceo@gmail.com said:
hellow, can you check is this correct..
protected override void OnBar()
{
var positionsBuy = Positions.FindAll("Buy");
var positionsSell = Positions.FindAll("Sell");
var distanceFromUpKumo = (Symbol.Bid - ichimoku.SenkouSpanA.Last(26)) / Symbol.PipSize;
var distanceFromDownKumo = (ichimoku.SenkouSpanA.Last(26) - Symbol.Ask) / Symbol.PipSize;
if (MarketSeries.Open.Last(1) <= ichimoku.SenkouSpanA.Last(27) && MarketSeries.Open.Last(1) > ichimoku.SenkouSpanB.Last(27))
{
if (MarketSeries.Close.Last(1) > ichimoku.SenkouSpanA.Last(27))
{
if (distanceFromUpKumo <= 25)
{//but if i put this way, i can only have 1 opened position at one momment, am i right ?
if (position.TradeType != TradeType.Buy && TradeType.Sell)
{
ExecuteMarketOrder(TradeType.Buy, Symbol, Volume, "Buy", StopLossPips, TakeProfitPips);}
}
}
}
Hi Handi
I'm sorry I don't think that is correct ..however, I could be wrong.
If the previous code did not work, try the one below, the previous one was written not copied and pasted:
using System; using System.Linq; using cAlgo.API; using cAlgo.API.Indicators; using cAlgo.API.Internals; using cAlgo.API.Requests; using cAlgo.Indicators; namespace cAlgo.Robots { [Robot(TimeZone = TimeZones.CentralStandardTime, AccessRights = AccessRights.None)] public class BigBarRobot : Robot { [Parameter("Volume:", DefaultValue = 1, MinValue = 1, Step = 1)] public int Volume { get; set; } [Parameter("StopLossPips:", DefaultValue = 10, MinValue = 1, Step = 0.5)] public double StopLossPips { get; set; } [Parameter("TakeProfitPips:", DefaultValue = 20, MinValue = 1, Step = 0.5)] public double TakeProfitPips { get; set; } protected override void OnBar() { //Search All Positions Open And Label That Search "TotalPositions" var TotalPositions = Positions.Count; { //If The Search Labeled "TotalPositions" Reports That No Position Is Open (Null or Less Than 1 or zero), Then, ExecuteMarketOrder if (TotalPositions < 1) ExecuteMarketOrder(TradeType.Buy, Symbol, Volume, "Buy", StopLossPips, TakeProfitPips); } } } }Enjoy.
Hi, i tried and i can only open position for 1 transaction :)
@handiphangceo@gmail.com
201058436
27 Mar 2017, 14:43
RE: RE: RE:
handiphangceo@gmail.com said:
Hi, i tried and i can only open position for 1 transaction :)
What do you mean by 'Transaction'?
,,Do you mean pair?
@201058436
handiphangceo@gmail.com
27 Mar 2017, 14:48
RE: RE: RE: RE:
AthenasGuidance said:
handiphangceo@gmail.com said:
Hi, i tried and i can only open position for 1 transaction :)
What do you mean by 'Transaction'?
,,Do you mean pair?
Yes Sir.
i sorry for my broken English,
so why im asking the code is because the bot keep opening multiple transaction, example : it buy EURUSD, then another minute it buy EURUSD again.
i want to check if i already have EURUSD opened, then the bot no need to open position anymore. But i want them to keep able buy/sell another pair :)
@handiphangceo@gmail.com
201058436
27 Mar 2017, 15:18
RE: RE: RE: RE: RE:
handiphangceo@gmail.com said:
Yes Sir.i sorry for my broken English,
so why im asking the code is because the bot keep opening multiple transaction, example : it buy EURUSD, then another minute it buy EURUSD again.
i want to check if i already have EURUSD opened, then the bot no need to open position anymore. But i want them to keep able buy/sell another pair :)
Try this, if it doesn't work, I can't help you anymore.. my programming is too limited:
protected override void OnBar() { foreach (Position Position in Positions.FindAll("Buy", null, TradeType.Buy)) { if (Position.SymbolCode != Symbol.Code) ExecuteMarketOrder(TradeType.Buy, Symbol, Volume, "Buy", StopLossPips, TakeProfitPips); } }
@201058436
201058436
27 Mar 2017, 15:25
RE: RE: RE: RE: RE: RE:
You may also have to add this:
&& Position.Label == "Buy")
@201058436
201058436
27 Mar 2017, 15:28
RE: RE: RE: RE: RE: RE: RE:
AthenasGuidance said:
You may also have to add this:
&& Position.Label == "Buy")
..and of course, an else if function for the "Sell" positions.
For example:
using System; using System.Linq; using cAlgo.API; using cAlgo.API.Indicators; using cAlgo.API.Internals; using cAlgo.API.Requests; using cAlgo.Indicators; namespace cAlgo.Robots { [Robot(TimeZone = TimeZones.CentralStandardTime, AccessRights = AccessRights.None)] public class BigBarRobot : Robot { [Parameter("Volume:", DefaultValue = 1, MinValue = 1, Step = 1)] public int Volume { get; set; } [Parameter("StopLossPips:", DefaultValue = 10, MinValue = 1, Step = 0.5)] public double StopLossPips { get; set; } [Parameter("TakeProfitPips:", DefaultValue = 20, MinValue = 1, Step = 0.5)] public double TakeProfitPips { get; set; } protected override void OnBar() { foreach (Position Position in Positions.FindAll("Buy", null, TradeType.Buy)) foreach (Position Position in Positions.FindAll("Buy", null, TradeType.Buy)) { if (Position.SymbolCode != Symbol.Code && Position.Label == "Buy") ExecuteMarketOrder(TradeType.Buy, Symbol, Volume, "Buy", StopLossPips, TakeProfitPips); else if (Position.SymbolCode != Symbol.Code && Position.Label == "Sell") ExecuteMarketOrder(TradeType.Buy, Symbol, Volume, "Sell", StopLossPips, TakeProfitPips); } } } }
And then of course, add all of your other IF statements that you need, your other conditions.
@201058436
201058436
27 Mar 2017, 15:29
RE: RE: RE: RE: RE: RE: RE: RE:
foreach (Position Position in Positions.FindAll("Buy", null, TradeType.Buy)) foreach (Position Position in Positions.FindAll("Sell", null, TradeType.Sell))
@201058436
201058436
27 Mar 2017, 15:30
RE: RE: RE: RE: RE: RE: RE: RE: RE:
AthenasGuidance said:
{ foreach (Position PositionLong in Positions.FindAll("Buy", null, TradeType.Buy)) foreach (Position PositionShort in Positions.FindAll("Buy", null, TradeType.Buy)) { if (PositionLong.SymbolCode != Symbol.Code && PositionLong.Label == "Buy") ExecuteMarketOrder(TradeType.Buy, Symbol, Volume, "Buy", StopLossPips, TakeProfitPips); else if (PositionShort.SymbolCode != Symbol.Code && PositionShort.Label == "Sell") ExecuteMarketOrder(TradeType.Buy, Symbol, Volume, "Sell", StopLossPips, TakeProfitPips); } } } }
I wish there were a way to edit a post or simply delete them entirely.
@201058436
201058436
27 Mar 2017, 15:31
RE: RE: RE: RE: RE: RE: RE: RE: RE: RE:
AthenasGuidance said:
AthenasGuidance said:
{ foreach (Position PositionLong in Positions.FindAll("Buy", null, TradeType.Buy)) foreach (Position PositionShort in Positions.FindAll("Buy", null, TradeType.Buy)) { if (PositionLong.SymbolCode != Symbol.Code && PositionLong.Label == "Buy") ExecuteMarketOrder(TradeType.Buy, Symbol, Volume, "Buy", StopLossPips, TakeProfitPips); else if (PositionShort.SymbolCode != Symbol.Code && PositionShort.Label == "Sell") ExecuteMarketOrder(TradeType.Buy, Symbol, Volume, "Sell", StopLossPips, TakeProfitPips); } } } }
I don't know what happened to the previous code.
@201058436
201058436
27 Mar 2017, 15:40
RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE:
AthenasGuidance said:
Please change the second foreach functions label from "Buy" to "Sell".
@201058436
handiphangceo@gmail.com
27 Mar 2017, 15:47
RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE:
AthenasGuidance said:
AthenasGuidance said:
Please change the second foreach functions label from "Buy" to "Sell".
build succeeded but cannot execute buy or sell, anyway thanks for helping me sir, i hope someone can help yours too :)
@handiphangceo@gmail.com
201058436
27 Mar 2017, 15:58
RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE:
handiphangceo@gmail.com said:
build succeeded but cannot execute buy or sell, anyway thanks for helping me sir, i hope someone can help yours too :)
Would it be alright to have a look at your code in full, even if it has to be privately exchanged?
@201058436
201058436
27 Mar 2017, 16:39
RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE:
handiphangceo@gmail.com said:
build succeeded but cannot execute buy or sell, anyway thanks for helping me sir, i hope someone can help yours too :)
It could be because of the foreach statement (Position instead of (var PositionLong..
{ foreach (var PositionLong in Positions.FindAll("Buy", null, TradeType.Buy)) foreach (var PositionShort in Positions.FindAll("Sell", null, TradeType.Sell)) { if (PositionLong.SymbolCode != Symbol.Code && PositionLong.Label == "Buy") ExecuteMarketOrder(TradeType.Buy, Symbol, Volume, "Buy", StopLossPips, TakeProfitPips); else if (PositionShort.SymbolCode != Symbol.Code && PositionShort.Label == "Sell") ExecuteMarketOrder(TradeType.Sell, Symbol, Volume, "Sell", StopLossPips, TakeProfitPips); } } } }
@201058436
201058436
27 Mar 2017, 17:05
RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE:
AthenasGuidance said:
It could be because of the foreach statement (Position instead of (var PositionLong..
And you may need these before the foreach statements:
var PositionLong = Positions.Find("Buy", null, TradeType.Buy); var PositionShort = Positions.Find("Sell, null, TradeType.Sell);
@201058436
handiphangceo@gmail.com
27 Mar 2017, 17:29
RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE:
AthenasGuidance said:
AthenasGuidance said:
It could be because of the foreach statement (Position instead of (var PositionLong..
And you may need these before the foreach statements:
var PositionLong = Positions.Find("Buy", null, TradeType.Buy); var PositionShort = Positions.Find("Sell, null, TradeType.Sell);
alot or error > . <
sure i can show you, send me your email address
@handiphangceo@gmail.com
201058436
27 Mar 2017, 17:48
RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE:
handiphangceo@gmail.com said:
AthenasGuidance said:
AthenasGuidance said:
It could be because of the foreach statement (Position instead of (var PositionLong..
And you may need these before the foreach statements:
var PositionLong = Positions.Find("Buy", null, TradeType.Buy); var PositionShort = Positions.Find("Sell, null, TradeType.Sell);
alot or error > . <
sure i can show you, send me your email address
Email: AthenasGuidance@sharklasers.com
It's a temporary disposable email.
@201058436
handiphangceo@gmail.com
27 Mar 2017, 17:57
RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE:
AthenasGuidance said:
handiphangceo@gmail.com said:
AthenasGuidance said:
AthenasGuidance said:
It could be because of the foreach statement (Position instead of (var PositionLong..
And you may need these before the foreach statements:
var PositionLong = Positions.Find("Buy", null, TradeType.Buy); var PositionShort = Positions.Find("Sell, null, TradeType.Sell);
alot or error > . <
sure i can show you, send me your email address
Email: AthenasGuidance@sharklasers.com
It's a temporary disposable email.
done
@handiphangceo@gmail.com
201058436
27 Mar 2017, 18:42
RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE:
done
I've sent you an email, did you get it?
@201058436
201058436
27 Mar 2017, 20:25
RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE:
AthenasGuidance said:
done
I've sent you an email, did you get it?
I don't know why, but that code should have solve the issue?!? ..I'm sorry it didn't.
@201058436
201058436
27 Mar 2017, 11:08
Hi Handi
I new to programming, so please take this with a grain of salt:
Hope it helps.
@201058436